好的,我猜这是一个性能问题。
我有一个带有两个导航链接的滑块(下一个和上一个),当滑块到达行的末尾时,我正在取消绑定下一个按钮,然后当它向另一个方向移动时再次绑定。我正在为下一个按钮执行相同的操作,但是相反。
下一个按钮的代码看起来像这样
if (at end of slider) {
nextBtn.unbind("click")
} else if (not already bound) {
nextBtn.bind("click",clickHandler)
}
所以...这样做是否更好,或者在点击处理程序中有条件来检查$.data(nextBtn,"state","on")
或$.data(nextBtn,"state","off")
答案 0 :(得分:2)
我会说条件陈述。
每次绑定和取消绑定事件时,只需放入jquery创建和管理整个新对象的事件。
答案 1 :(得分:2)
如果您使用的是实际的<button>
,则可以将disabled
属性设置为true
,而不必担心事件处理程序中的任何内容,因为事件永远不会被触发。这还有一个额外的好处,就是添加一个视觉助手告诉用户有问题的按钮不再起作用(无论选择的按钮表示如何,你都应该这样做。)
否则,我通常会尽可能地保持DOM的思维方式,包括绑定和解除绑定的事件。考虑到这一点,我会将事件绑定一次,并检查事件处理程序中的任何条件。