0

我相信,这不是一个共享点2007年问题,但ID掩盖了我所有的基础。SharePoint 2007 onchange事件不解除绑定在ie6

我正在一家大型公司咨询,为他们的Intranet开发一个共享点解决方案。我的任务之一是将sharepoint 2007 listview中的常规下拉列表与提前键入并过滤的内容进行切换。所以我选择了一个jQuery组合框。

现在,除ie6以外的所有组合框都可以工作,而onchange事件也可以工作。我的过程是这样的:

function diidFilterLinkTitleNoMenuOnChange() 
{ 
    FilterField("{9232EB4D-2E5D-40D3-A1C0-818CC21AC839}","LinkTitleNoMenu",this._selOption.value, this.selectedIndex); 
} 

$(document).ready(function(){ 
window.dhx_globalImgPath='../_layouts/Intranet.Portal.Custom/PeopleChangesFiles/imgs/'; 
    var y = document.getElementById('diidFilterLinkTitleNoMenu'); 
    if(y != null) 
    { 
      $('#diidFilterLinkTitleNoMenu').change(function(){}).attr('onchange',function(){}); 


      var z = dhtmlXComboFromSelect('diidFilterLinkTitleNoMenu'); 
      z.enableFilteringMode(true); 
      z.attachEvent("onchange",diidFilterLinkTitleNoMenuOnChange); 
      y.parentNode.removeChild(y);  

    }   

    }) 

打开选择列表进入一个组合框,然后重新分配一个不同的onchange事件之前,我删除当前onchange事件。

发生了什么,据我可以告诉ie6,是旧的onchange事件仍然存在,仍然附加,并先发射,因为它打破了代码,我的事件不运行。

在ie6中删除事件有特殊的方法吗?或者我做错了什么?

回答

1

那是因为change()方法是.bind('change', handler)的快捷方式。而.bind附加的事件处理程序不会删除或覆盖。从bind()

报价:

当一个事件到达一个元素,绑定到该事件 类型元素的所有处理被解雇。如果有多个处理程序 已注册,则它们将始终按它们的 范围内的顺序执行。

使用unbind删除事件处理程序:$('#diidFilterLinkTitleNoMenu').unbind('change');