在我的应用程序中,我使用的是插件(noUiSlider),我想通过点击使工具提示可编辑。
我的问题是,插件中的监听器会阻止工具提示的点击。 我想取消绑定所有听众,存储它们并在一段时间后重新绑定。
像(这不会起作用):
var listeners = $(element).unbind("click");
[...]
$(element).bind(listeners)
这可能吗?
答案 0 :(得分:0)
尝试
var element = $(selector), listeners = [];
// remove listeners
if ($._data(element[0], "events") !== undefined) {
$.each($._data(element[0], "events"), function(key, value) {
listeners.push([key, value[0].handler]);
element.off(key);
});
};
// add listeners
$.map(listeners, function(value) {
element.on(value[0], value[1])
});
var div = $("div"), listeners = [];
div.on("click dblclick mouseover", function(e) {
console.log(e)
});
if ($._data(div[0], "events") !== undefined) {
$.each($._data(div[0], "events"), function(key, value) {
listeners.push([key, value[0].handler]);
div.off(key);
});
};
$("button").on("click", function(e) {
$.map(listeners, function(value) {
div.on(value[0], value[1])
});
div.text(function(_, text) {
return text.replace(/off/, "on")
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>click dblclick mouseover (off)</div><button>click</button>