首次单击后更改元素的onclick处理程序

时间:2014-04-13 07:27:28

标签: javascript jquery closures

   div.onclick = function(data, dom) {
        return function() {
           if (data.seenAlready == true) { // HACK
              $(this).children().toggle();
              return;
           }
           recursiveSearch(data, dom);

          // after this onclick, I want to assign it to a toggle like function. no clue how to do it.
       }
  }(child, mycontainer.appendChild(div));

我在第一次点击dom元素后尝试交换onclick方法。我没有取得任何成功,似乎有某种关闭损失,或者其他什么。我使用jQuery很好。

1 个答案:

答案 0 :(得分:0)

您有两种方法可以执行此操作,两种方法都是使用jQuery函数:

1)使用one API方法 - 这只会运行一次。您将单击它一次,然后您选择自己的第二个处理程序,第一个处理程序将不会再次触发,例如。

$(myselector).one(function(){
    $(this).click(myotherhandler);
});

以下是此API http://api.jquery.com/one/的链接。

2)您可以选择以下方式来替换事件处理程序。

$(myselector).click(function(){
    $(this).off();
    $(this).click("secondhandler");
});

这将关闭第一个处理程序,并将触发第二个处理程序

检查这个jsbin:

http://jsbin.com/fekuq/1/edit?html,js,output