我有这段代码:
function expandCollapse(hypId, ElemId, ShowText, HideText) {
var handler = function () {
$("#" + ElemId).toggle();
toggle(hypId, ElemId, ShowText, HideText);
}
$('#' + hypId).live('click', handler);
}
我想确保无论是否为> 1次调用此代码,只要为click事件注册相同的hypId,它就不应该执行任何操作。我该怎么做?
答案 0 :(得分:4)
一些事情:
1:您不应该使用live()
,而是deprecated。
2:处理这种情况的最简单方法(如果在执行展开/折叠时元素就在附近)是使用命名空间。像这样:
function expandCollapse(hypId, ElemId, ShowText, HideText) {
var handler = function () {
$("#" + ElemId).toggle();
toggle(hypId, ElemId, ShowText, HideText);
}
$('#' + hypId).off('click.mynamespace').on('click.mynamespace', handler);
}
将mynamespace
替换为您选择的与相关处理程序相关的内容。这样,它会删除它可能附加的任何现有处理程序,然后使用可能存在的新选项without impacting any other handlers重新添加处理程序。
答案 1 :(得分:0)
$('#' + hypId).one('click', handler);