【问题标题】:jQuery Dynamic Binding not working IE 7 or 8jQuery 动态绑定不工作 IE 7 或 8
【发布时间】:2009-09-10 21:51:58
【问题描述】:

我正在处理选择下拉列表。此列表将所有选定的元素(由用户完成)以隐藏字段的形式添加到容器

中。此选择有一个链接,用户可以选择将其从选择容器中删除。每次进行新的选择时,代码会自动绑定一个函数,该函数会在用户单击 REOMVE 链接的情况下移除选择,如下所示:


类别 #1 REMOVE_LINK


类别#2选项>
类别#3选项>
选择 >

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

这在 Fire Fox 和 Safari 中非常有效,但在 IE 中根本不适用。即使我每次为每个选定的元素重新绑定,所有绑定都丢失了,唯一有效的是我添加并与删除功能绑定的最后一个元素。

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

谢谢

【问题讨论】:

  • 我们可以先看看你的一些代码吗?

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


【解决方案1】:

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

【讨论】:

  • 你是对的,live 无法正常工作的原因是我们很快更新了旧版本的 jquery。
【解决方案2】:

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

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

【讨论】:

  • 不幸的是,这个答案对我不起作用。我尝试使用 live 功能没有运气,它没有将删除功能绑定到所选类别。我希望我可以使用它,这听起来像是一个很棒的功能,而且它消除了一遍又一遍地重新绑定功能的需要。虽然我确实找到了我的问题的简单答案,但我将在下面发布。
【解决方案3】:

我没有运气使用 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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    相关资源
    最近更新 更多