我尝试了以下 unbind 方法来取消与 class 的元素绑定'.rightclickarea'
。
$('.rightclickarea').unbind();
$('.rightclickarea').bind("contextmenu",function(e){
e.preventDefault()
});
但是该元素不是未绑定事件。因此,每次我调用此方法 BindBookMarkPopUp() 时,它都会尝试再次绑定,这会产生问题。那么有什么方法可以在 jquery 中的每个绑定之前解除绑定。谢谢!
function BindBookMarkPopUp() {
$('.rightclickarea').unbind("contextmenu");
$('.rightclickarea').bind('contextmenu', function(e) {
id = $(this).attr("id");
$("#current_id").html(id.substring(3));
$("#current_id").attr("data-type",1);
var $cmenu = $(".vmenu_bookmark");
$('<div class="overlay"></div>').css({
left : '0px',
top : '0px',
position : 'absolute',
width : '100%',
height : '100%',
zIndex : '100'
}).click(function() {
$(this).remove();
$cmenu.hide();
}).bind('contextmenu', function() {
return false;
}).appendTo(document.body);
$(".vmenu_bookmark").css({
left : e.pageX,
top : e.pageY,
zIndex : '101'
}).show();
return false;
});
$('.vmenu_bookmark .first_li').live('click', function() {
if ($(this).children().size() == 1) {
alert("book_marks");
if ($(this).attr("id") == "vmenu_bookmark") {
$.colorbox({
inline : true,
width : 280,
height : 120,
href : "#title_content",
title : "Enter title for Bookmark"
});
}
$('.vmenu_bookmark').hide();
$('.overlay').hide();
}
});
$('.vmenu_bookmark .second_li').live('click', function() {
if ($(this).children().size() == 1) {
if ($(this).attr("id") == "vmenu_project") {
alert("project_click")
PopulateProjects();
$.colorbox({
inline : true,
width : 500,
height : 400,
title : "",
href : "#title_content_project"
});
}
$('.vmenu_bookmark').hide();
$('.overlay').hide();
}
});
HTML 代码:
<div class="vmenu vmenu_bookmark">
<div class="first_li" id="vmenu_bookmark"><span>Add to Bookmark</span></div>
<div class="second_li" id="vmenu_project"><span>Add to Project</span></div>
<div style="display: none;" class="sep_li"></div>
<div style="display:none;" class="first_li"><span>XYZ</span>
<div class="inner_li">
<span>ABC</span>
<span>PQR</span>
<span>MNO</span>
</div>
</div>
</div>