2

jquery uiモーダルダイアログを使用して、リンクのクリックを「確認」する次のコードがあります。[OK] をクリックすると、元のリンクに移動します。それは正常に動作するので、あまり詳細に読む必要はありません =)

    $('.confirm').live('click', function(e) {
  e.preventDefault();
  var theHref = $(this).attr('href');
  var confirmText = 'Are you sure?';
  if ($(this).attr('confirm')) {
   confirmText = $(this).attr('confirm');
  }
  confirmDialog.html(confirmText);
  confirmDialog.dialog({
   buttons: {
    'OK': function() {
     window.location = theHref;
     $(this).dialog('close');
    },
    Cancel: function() {
     $(this).dialog('close');
     return false;
    }
   }
  });
  confirmDialog.dialog('open');
  return false;
 });

次に、他の任意の機能がたくさんあります。のように、次のように言います。

    $('a.reset').live('click', function(e) {
  e.preventDefault();
  $(this).parents('form')[0].reset();
 });

これは、フォームをリセットする単なるリンクです (input type = reset など)。この機能も正常に動作します。これは単なる任意の例であることに注意してください。クラスを介して添付するJS機能のさまざまなスニペットがたくさんあります。

私が遭遇している問題は、これら2つを積み重ねることです。この例では、確認が必要なリセット リンクもあれば、そうでないリセット リンクもあります。そのようです:

<a href="" class="reset confirm">Reset on confirmation</a>
<a href="" class="reset">Reset without confirmation</a>

もちろん問題は、最初の例が確認を気にしないことです - それはただ進んでリセットします。(HTML の例のように) これらのコードのビットを分離してモジュール化し続けると同時に、一方を他方の出力に依存させる方法はありますか?

私が何を達成しようとしているのかが明確になることを願っています。

ご協力いただきありがとうございます。ここに投稿するのは初めてなので、よろしくお願いします=)

4

3 に答える 3

0

これが機能するかどうかはわかりませんが、逆の順序で .live ハンドラーを作成してみてください。最後に取り付けられたものから最初に取り付けられたものまでトリガーされる可能性があると思います。

于 2010-11-02T09:01:27.227 に答える
0

非常に単純なアプローチの1つは、あなたが達成したいことを私が理解したことから推測すると、デフォルトの動作を防ぐ前に、要素に確認クラスが関連付けられているかどうかを確認することです。

于 2010-11-02T09:03:03.483 に答える
0

リセットクラスの前に確認クラスにコードを添付するだけで、おそらくこれを整理できると思います。document.ready またはイベントを指定する場所の上位に置くだけです。

于 2010-11-02T09:03:51.730 に答える