Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 绑定/取消绑定事件还是使用条件(jQuery)更好_Javascript_Jquery_Performance - Fatal编程技术网

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来测试可能也不太合适