Динамическое связывание jQuery не работает IE 7 или 8 - PullRequest
0 голосов
/ 11 сентября 2009

Я работаю над выпадающим списком выбора. этот список добавляет все выбранные элементы (сделанные пользователем) в контейнер

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


Категория № 1 REMOVE_LINK

<выберите>
Category # 2
Category # 3

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

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

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

Спасибо

Ответы [ 3 ]

1 голос
/ 11 ноября 2009

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

0 голосов
/ 14 сентября 2009

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


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

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

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


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

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

0 голосов
/ 11 сентября 2009

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

$("a.removeLink").live("click", function() {
  $(this).next("input").remove();
}
...