1

特定のリンクで facebox プラグインを使用しています。

一部のリンクを動的に無効にしたい。そのため、それらをクリックしてもフェイスボックスは開きません。

いくつかの方法を試しましたが、どれもうまくいかないようです。リンクをクリックしても、Facebox は引き続き機能します。

私もこれを試しました(クリックとマウスダウンのイベントを防ぎます)が、まだフェイスボックスのポップアップを無効にしません。

$('#who_button').click(function(event) {  event.preventDefault();});
$('#who_button').mousedown(function(event) {  event.preventDefault();});

私に何ができる?

編集:

brad と PetersenDidIt のアドバイスに従って、私はこれを試しました:

$('#who_button').click(function(event) { alert ('here');event.stopPropagation(); event.stopImmediatePropagation();});
    $('#who_button').mousedown(function(event) { event.stopPropagation(); event.stopImmediatePropagation();});

そしてまだ運がありません。さらに、アラート ダイアログの下にフェイスボックス フレームが表示されます。これは、クリック/マウスダウンイベントが呼び出される前に、フェイスボックスが開始されることを意味します。

他のすべてのイベントの前に発生するイベントを添付することは可能ですか?

おそらく、facebox は別のイベントを使用します (クリックやマウスダウンではありません)。それは何でしょうか?

4

2 に答える 2

1

preventDefault は、そのクリックの通常の動作 (つまり、リンクのリダイレクト) を防止するだけです。

私は一度も facebox を使用したことがないので、それがどのようにイベントをバインドするのかはわかりませんが、おそらく次のようなものが必要になるでしょう:

event.stopImmediatePropagation()

編集

facebox は独自のカスタム イベントを使用しているようです。これはソース (以下) で確認できます。したがって、最善の策は、そのイベントから要素をバインド解除することです。

$("ele").unbind("click.facebox");

Facebook 公開機能

  $.fn.facebox = function(settings) {
    if ($(this).length == 0) return

    init(settings)

    function clickHandler() {
      $.facebox.loading(true)

      // support for rel="facebox.inline_popup" syntax, to add a class
      // also supports deprecated "facebox[.inline_popup]" syntax
      var klass = this.rel.match(/facebox\[?\.(\w+)\]?/)
      if (klass) klass = klass[1]

      fillFaceboxFromHref(this.href, klass)
      return false
    }

    return this.bind('click.facebox', clickHandler)
  }
于 2010-08-10T15:46:29.390 に答える
0

event.stopPropagation() を試す

于 2010-08-10T15:45:30.317 に答える