jQuery Dynamic Binding не работает в IE 7 или 8

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

‹ DIV id="selectedCategories" >
Категория №1 REMOVE_LINK
‹ input type="hidden" value="9524" name="recordIds[]" /> ‹ /DIV>
‹ выбрать>
‹ вариант >Категория #2‹ /опция>
‹ вариант >Категория #3‹ /опция>
‹ /выбрать >

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

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

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

Спасибо


person Onema    schedule 10.09.2009    source источник
comment
мы можем начать с просмотра вашего кода?   -  person Colin    schedule 11.09.2009


Ответы (3)


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

person Nic Hubbard    schedule 11.11.2009
comment
вы правы, причина, по которой live не работал, была из-за старой версии jquery, которую мы вскоре обновили. - person Onema; 11.11.2009

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

$("a.removeLink").live("click", function() {
  $(this).next("input").remove();
}
person daddywoodland    schedule 10.09.2009
comment
К сожалению, этот ответ не сработал для меня. Я безуспешно пытаюсь использовать живую функцию, она не привязывала функцию удаления к выбранной категории. Я хотел бы использовать его, это звучит как отличная функция, плюс она избавляет от необходимости повторно привязывать функцию снова и снова. Хотя я нашел простой ответ на свой вопрос, который я опубликую ниже. - person Onema; 14.09.2009

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



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

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


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



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

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

person Onema    schedule 14.09.2009