Вопрос

Я работаю над выпадающим списком выбора.этот список добавляет все выбранные элементы (сделанные пользователем) в контейнер < DIV > в виде скрытых полей.У этого выбора есть ссылка, которая дает пользователю возможность удалить его из контейнера выбора.Каждый раз, когда делается новый выбор, код автоматически привязывает функцию, которая заменяет удаление выбора в случае, если пользователь нажимает на ссылку REOMVE, что-то вроде этого:

< Идентификатор DIV="Выбранные категории">
Категория №1 УДАЛИТЬ ССЫЛКУ
< тип ввода="скрытое" значение ="9524" имя="Идентификаторы записей[]" /> < /DIV>
< выберите>
< опция >Категория №2< /опция>
< опция >Категория №3< /опция>
< /выбрать >

Каждый раз, когда делается новый выбор из выпадающего списка, все ранее выбранные элементы необходимо "повторно привязать" с помощью функции удаления.По какой-то причине это необходимо сделать, потому что все элементы, кажется, теряют свою предыдущую привязку при добавлении нового.

Это очень хорошо работает в Fire Fox и Safari, но они вообще не работают для IE.несмотря на то, что я каждый раз повторно привязываю каждый выбранный элемент, все привязки теряются, и единственный, который работает, - это самый последний элемент, который я добавил и привязал с помощью функции удаления.

Мой вопрос заключается в следующем: есть ли обходной путь для этого, или как мне решить эту проблему?К сожалению, IE является наиболее широко используемым интернет- браузером : (

Спасибо

Это было полезно?

Решение 3

Я использовал функцию Live, но безуспешно, возможно, я делаю что-то не так.что действительно сработало для меня, так это отмена привязки функции перед добавлением или повторной привязкой любой другой функции.
Итак, если я привяжу функцию к событию click следующим образом.



 $('#deleteRecord1').bind('click',function() 
   { 
        // function here ...
   }
 );

$('#deleteRecord2').bind('щелчок',функция() { // функция здесь...} );


Позже, когда я удалю record1, мне нужно будет повторно привязать этот метод к record2, я сделаю это таким образом, чтобы он работал в IE 7 и 8



 $('#deleteRecordId').unbind('click');
 $('#deleteRecordId').bind('click',function() 
   { 
        // function here ...
   }
 );

В этом случае "Id" относится к уникальному идентификатору, который есть у каждого выбранного объекта, в данном примере соответствует номеру 2.

Другие советы

Вы уверены, что используете правильную версию jQuery для использования функции live? Он относительно новый, поэтому вам нужно убедиться, что вы используете самую новую версию.

Вы можете использовать функцию live () для привязки к каждому экземпляру элемента в страница, настоящее и будущее. Это избавит вас от необходимости повторного связывания.

$("a.removeLink").live("click", function() {
  $(this).next("input").remove();
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top