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

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);

メソッドを使用することを選択した理由がわかりません..IDを持つ要素を1つ以上持つことはできないため、メソッド.live()を使用する必要があります.click()#PopItUp

于 2013-01-11T23:18:25.663 に答える
0

まず、e.preventDefault(); を理解する必要があります。ハイパーリンク、フォーム送信アクション アクションなどのデフォルト アクションのみを防止します。

これがあなたが望んでいたものの実際の例です。

http://plnkr.co/edit/v2yx7amBuv2SDCJ0YchB

于 2013-01-11T23:24:50.767 に答える
0

助けてくれてありがとう。しかし、Fiddle ではコードが機能することがわかります (Jigar Patel) が、私の index.php では機能しません。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 に答える