防止点击动作

时间:2013-01-11 23:09:48

标签: javascript jquery popup bpopup

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

3 个答案:

答案 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();它只会阻止默认操作,如超链接,表单提交操作操作。

以下是您想要的工作示例。

http://plnkr.co/edit/v2yx7amBuv2SDCJ0YchB

答案 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;
};