0

WordPress サイトがあり、jQuery コードのカスタム チャンクをサイトに追加したいと考えています。以下のコードは、ユーザーがラジオ ボタンを選択したときにトリガーされ、その変更をページ内の別の変更にリンクすることを意図しています。生成された DOM は要素に ID を設定するため、イベントを要素にバインドする作業に進みました。問題は、firebug を調べるとイベントがトリガーされることですが、関数がトリガーされません。

私はしようとしました:

  • イベントバインディングをドキュメント内に配置する準備ができました...
  • 外部ドキュメント準備完了...
  • ヘッダーにスクリプトを追加しました....
  • スクリプトをフッターに追加しました...
  • イベントを呼び出すときに省略形「$」と jQuery の両方を使用する
  • e.preventDefault() メソッドを試してみました

すべてのメソッドで同じ結果が得られる場合、関数はトリガーされません。また、さまざまなイベント(クリック、選択、変更...)を試しましたが、うまくいきませんでした。

スクリプトは次のとおりです。

<script>
jQuery(document).ready(function($) {
var processing = false;
$('#shipping_method_local_delivery').click(function(e){
            e.preventDefault();
            alert("this is the click");
        });

$('#payment_method_rba_etomitreba').change(function(){
    if (processing) {return;}
    processing = true;
    $('#shipping_method_local_delivery').click();
    processing = false;
});

$('#shipping_method_local_pickup').change(function(){
    if (processing) {return;}
    processing = true;  
    $('#payment_method_cod').click();
    processing = false;
});

$('#payment_method_cod').change(function(){
    if (processing) {return;}
    processing = true;
    $('#shipping_method_local_pickup').click();
    processing = false;
});

$('#payment_method_bacs').change(function(){
    if (processing) {return;}
    processing = true;
    $('#shipping_method_local_delivery').click();
    processing = false;
});
});
</script>
4

2 に答える 2

0

オッズは、実行時にセレクターが DOM 要素を返さないことです。これは、要素が別の javascript/jquery セットによって作成されている場合に発生する可能性があります。

firebug を使用して、イベント ハンドラーをバインドする最初の試みでブレークポイントを設定し、ウォッチ ウィンドウで jQuery セレクターのウォッチを設定し、配列が 0 かデータが取り込まれているかどうかを確認します。

後で DOM 要素を作成する場合は、jQuery on メソッドhttp://api.jquery.com/on/を使用して確認することをお勧めします。頭を整理するのは少し難しいかもしれません...しかし、一度理解すれば、コードは問題なく動作するはずです。

于 2013-09-04T20:27:36.820 に答える
0

jQueryですべての「$」を変更してみてください。

于 2013-09-04T20:31:18.073 に答える