我有两个链式鼠标事件:
$('body > form').on("mousedown", function(e){
//Do stuff
}).on("mouseup", function(){
/*More stuff, including
window.addEventListener(...
*/
});
但是,当我尝试off()
来自其他外部函数时,我只能off()
mousedown
,而不是mouseup
,其功能继续有效。
嵌套addEventListener
是否可以阻止我离开它的活动? (
顺便说一下,我并不重要
链:($().off().off();
)或unchain($().off(); $().off();
),或组合($().off(A B);
)或反向(A B - B A)元素;始终如一,off(mousedown)
有效,但从不off(up)
。
(问题部分是第二个脚本,最后:)
<script>
function comment() {
$('body > form').on("mousedown.markerPlacer", function(e){
//Place the cursor marker on the screen
var newComment2 = $('<div id="newComm" class="marker" class="deg45" ↑</div>');
$('form').append(newComment2);
}).on("mouseup", function(){
//Now use the Q-key to rotate the marker.
window.addEventListener("keydown", extraKey, false);
window.addEventListener("keyup", keysReleased2, false);
function extraKey(e) {
var deg = e.keyCode;
if (deg == 81) { //81 is the keycode, which codes for Q
$('#newComm').attr('class', 'marker').addClass('deg0');
} else {
return false;
};
e.preventDefault();
};
function keysReleased2(e) {
e.keyCode = false;
};
});
};
</script>
<script>
function dismissComment() {
$('body > form').off("mousedown mouseup");
}
</script>
答案 0 :(得分:1)
出于好奇,我写了一个类似链式的mousedown和mouseup,如你的代码所示 然后我点击按钮取消绑定它们。 它似乎工作正常,我无法重现你的问题 它能够&#34;关闭&#34; mousedown和mouseup事件监听器。
$("#testMe")
.on("mousedown", function(e) {
appendText(getButton(e.button) + " | " + $(this).attr("id") + " | " + "mouseDOWN | " + new Date());
})
.on("mouseup", function(e) {
appendText(getButton(e.button) + " | " + $(this).attr("id") + " | " + "mouseUP | " + new Date());
$(document).off("keydown keyup");
$(document).on("keydown", keydown_pressed);
$(document).on("keyup", keyup_pressed);
});
解开/&#34;关闭&#34;代码强>
$("#unbind").click(function(e) {
$("#testMe").off("mousedown mouseup");
$(document).off("keydown keyup");
});
在页面加载上,mousedown和mouseup将附加到输入文本框。
在鼠标点击文本框后,添加了窗口keydown和keyup事件侦听器。
我&#34; off&#34;或取消绑定,删除所有事件侦听器。