我有这段代码:
function expandCollapse(hypId, ElemId, ShowText, HideText) {
var handler = function () {
$("#" + ElemId).toggle();
toggle(hypId, ElemId, ShowText, HideText);
}
$('#' + hypId).live('click', handler);
}
我想确保无论是否调用此代码>1 次,只要为点击事件注册了相同的 hypId,它就不应该做任何事情。我该怎么做?
几件事:
1:你不应该使用live()
,它已被弃用。
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
替换为您选择的与相关处理程序相关的内容。这样,它将删除它可能已附加的任何现有处理程序,然后再使用新选项重新添加处理程序,而不会影响可能存在的任何其他处理程序。
$('#' + hypId).one('click', handler);