jQuery Dynamic Binding无法运行IE 7或8

时间:2009-09-10 21:51:59

标签: jquery binding internet-explorer-8 internet-explorer-7 xajax

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

< DIV id =“selectedCategories”>
   类别#1 REMOVE_LINK
   < input type =“hidden”value =“9524”name =“recordIds []”/> < / DIV>
<选择>
   <选项>类别#2< /选项>
   <选项>类别#3< /选项>
< / select>

每次从下拉列表中进行新选择时,所有先前选择的元素都需要使用delete函数“重新绑定”。由于某种原因,有必要这样做,因为所有元素似乎都是添加新的绑定时松开以前的绑定。

这在Fire Fox和Safari中非常有效,但它们根本不适用于IE 。即使我每次为每个选定的元素重新绑定,所有绑定都会丢失,唯一有效的是我添加的最后一个元素,并使用delete函数绑定。

我的问题是: 是否存在此问题,或者如何解决此问题?不幸的是,IE是使用最广泛的互联网浏览器:(

谢谢

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您可以使用live()函数绑定到页面上的每个元素实例,无论是现在还是将来。这样可以节省您重新绑定的费用。

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

答案 2 :(得分:0)

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



 $('#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.