0

我正在为 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);    
4

3 回答 3

0

谢谢大家的帮助。但是我在 Fiddle 中看到代码可以工作(Jigar Patel),但在我的 index.php 中它不起作用......所以我启动了 firebug 并看到错误 Reference Error 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;
};   
于 2013-01-12T09:43:13.910 回答
0

preventDefault()方法不会验证您的弹出窗口是否已经打开!a它只是阻止元素的默认操作。

不推荐使用 Live 方法

我认为你需要这个:

$(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()方法,因为你不能拥有超过一个#PopItUpid的元素

于 2013-01-11T23:18:25.663 回答
0

首先你必须了解 e.preventDefault(); 它只阻止默认动作,例如超链接、表单提交动作动作。

这是您想要的工作示例。

http://plnkr.co/edit/v2yx7amBuv2SDCJ0YchB

于 2013-01-11T23:24:50.767 回答