Javascript 绑定/取消绑定事件还是使用条件(jQuery)更好
好吧,我想这是一个性能问题 我有一个带有两个导航链接(下一个和上一个)的滑块,当滑块到达行的末尾时,我当前正在解除下一个按钮的绑定,然后当它转到另一个方向时再次绑定。我正在对“下一步”按钮执行相同的操作,但操作相反 “下一步”按钮的代码如下所示Javascript 绑定/取消绑定事件还是使用条件(jQuery)更好,javascript,jquery,performance,Javascript,Jquery,Performance,好吧,我想这是一个性能问题 我有一个带有两个导航链接(下一个和上一个)的滑块,当滑块到达行的末尾时,我当前正在解除下一个按钮的绑定,然后当它转到另一个方向时再次绑定。我正在对“下一步”按钮执行相同的操作,但操作相反 “下一步”按钮的代码如下所示 if (at end of slider) { nextBtn.unbind("click") } else if (not already bound) { nextBtn.bind("click",clickHandler) } 所以。。。
if (at end of slider) {
nextBtn.unbind("click")
} else if (not already bound) {
nextBtn.bind("click",clickHandler)
}
所以。。。最好是这样做,还是在单击处理程序中有一个条件来检查
$数据(nextBtn,“state”,“on”)
或$数据(nextBtn,“state”,“off”)
我会说条件语句
简单地说,每次从我收集的内容绑定和解除绑定事件时,jquery都必须创建和管理一个完整的新对象。如果您使用的是实际的
,那么您只需将disabled
属性设置为true
,而不必担心事件处理程序中的任何问题,因为事件永远不会被触发。这还有一个额外的好处,即添加一个视觉助手,告诉用户有问题的按钮不再起作用(无论选择的按钮表示形式如何,您都应该这样做)
否则,我通常保持尽可能远离DOM的心态,这包括绑定和解除绑定事件。考虑到这一点,我将绑定事件一次,并检查事件处理程序中的任何条件。Hmm,也许(在反射时)按钮是一个糟糕的词语选择。它实际上是一个动态创建的链接,因此没有禁用状态。不过我同意你的观点。我将尝试使用一个条件来实现这一点,尽管使用$.bind来测试可能也不太合适