0

我正在处理选择下拉列表。此列表将所有选定的元素(由用户完成)以隐藏字段的形式添加到容器 <DIV> 中。此选择有一个链接,用户可以选择将其从选择容器中删除。每次进行新的选择时,代码会自动绑定一个在用户单击 REOMVE 链接的情况下删除选择的函数,如下所示:

< DIV id="selectedCategories">
Category #1 REMOVE_LINK
< input type="hidden" value="9524" name="recordIds[]" /> </DIV>
<select>
< option >Category #2</option>
< option >Category #3</option>
<

每次从下拉列表中进行新选择时,都需要使用删除功能“重新绑定”所有先前选择的元素。出于某种原因,有必要这样做,因为所有元素似乎都失去了以前的添加新的时绑定。

这在 Fire Fox 和 Safari 中运行良好,但它们对 IE 根本不起作用。即使我每次为每个选定的元素重新绑定,所有绑定都会丢失,唯一有效的是我添加并与删除功能绑定的最后一个元素。

我的问题是:是否有解决方法,或者我该如何解决这个问题?不幸的是,IE 是目前使用最广泛的互联网浏览器 :(

谢谢

4

3 回答 3

1

您确定使用正确版本的 jQuery 来使用 live 功能吗?它相对较新,因此您需要确保使用的是最新版本。

于 2009-11-11T15:20:22.870 回答
0

我没有运气使用 Live 功能,也许我做错了什么。对我有用的是在添加或重新绑定任何其他功能之前取消绑定该功能。
因此,如果我将一个函数绑定到这样的单击事件。



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

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


稍后当我删除record1时,我需要将此方法重新绑定到record2,我会这样做以使其在IE 7和8中工作



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

在这种情况下,“Id”指的是每个被选中的人都有一个唯一的 id,在这个例子中对应于数字 2。

于 2009-09-14T17:18:10.327 回答
0

您可以使用live()函数绑定到页面上元素的每个实例,现在和将来。这使您不必重新绑定。

$("a.removeLink").live("click", function() {
  $(this).next("input").remove();
}
于 2009-09-10T22:49:26.627 回答