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

LT <!>; DIV id = <!> quot; selectedCategories <!> quot; <!> gt;
   类别#1 REMOVE_LINK
   LT <!>; input type = <!> quot; hidden <!> quot;值= QUOT <!>; <!> 9524 QUOT; <!>命名= QUOT; <!> recordIds [] QUOT; / GT <!>; LT <!>; / DIV GT <!>;结果 LT <!>;选择GT <!>;结果    LT <!>;选项<!> gt;类别#2 <!> lt; /选项GT <!>;结果    LT <!>;选项<!> gt;类别#3 <!> lt; /选项GT <!>;结果 LT <!>; / select <!> gt;

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

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

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

谢谢

有帮助吗?

解决方案 3

我使用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.

其他提示

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

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

$("a.removeLink").live("click", function() {
  $(this).next("input").remove();
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top