我正在为jQuery使用bPopup插件,除了点击之外一切正常。当我点击链接时会打开一个弹出窗口。然后,当我点击另一个链接时,它再次打开一个弹出窗口。
所以我看到e.preventdefault无效。如何使其工作以防止点击其他链接?
// Semicolon (;) to ensure closing of earlier scripting
// Encapsulation
// $ is assigned to jQuery
;(function($) {
// DOM Ready
$(function() {
// Binding a click event
// From jQuery v.1.7.0 use .on() instead of .bind()
$('#PopUpItUp').live('click', function(e) {
// Prevents the default action to be triggered.
e.preventDefault();
// Triggering bPopup when click event is fired
$('#popup').bPopup({follow: [false, false], position: [310, 25]});
});
});
})(jQuery);
答案 0 :(得分:0)
preventDefault()
方法无法验证您的弹出窗口是否已打开!它只是阻止了a
元素的默认操作。
不推荐使用实时方法
我认为你需要这个:
$(function() {
var opened = false;
$('#PopUpItUp').click(function(e) {
// Prevents the default action to be triggered.
e.preventDefault();
if(!opened) {
// Triggering bPopup when click event is fired
$('#popup').bPopup({follow: [false, false], position: [310, 25]});
opened = true;
}
});
})(jQuery);
我不知道为什么你选择使用.live()
方法...你只需要使用.click()
方法,因为你不能只有一个#PopItUp
个id的元素
答案 1 :(得分:0)
首先你要了解e.preventDefault();它只会阻止默认操作,如超链接,表单提交操作操作。
以下是您想要的工作示例。
答案 2 :(得分:0)
谢谢大家的帮助。但我在Fiddle中看到代码有效(Jigar Patel),但在我的index.php中它不起作用......所以我启动了firebug并看到错误参考错误e.PreventDefault()。 e未定义。因此,在其他没有PopUpItUp id的链接触发bpopup窗口时,这里是firebug断开并显示错误的代码:
function ShowIMDBInfo(id)
{
$.ajax({
url: 'http://myurladdress/external.php?id='+id,
success: function(data) {
$('#popup').html('<div>' + data + '</div>');
},
error: function(request, error, errormessage) {
$("#messages").html(error + '\n' + errormessage);
}
});
e.preventdefault();
return false;
};