1

私がやろうとしていることに対する明確な答えを見つけることなく、stackoverflowと残りのWebを検索しました。私は次のHTMLコードを持っています:

<a id="orderPadReviewSubmitBtn" href="#" class="portlet-lightGrey-button  float-right"><span>Submit order</span></a>

これは、ボタンのクリックからJavaScriptを介してロードされます。サイトのjQueryが1.4.2であるため、デリゲートを使用しようとしています。そのため、「on()」は使用できません。

私が試しているコードは次のとおりです。

$("a[id=orderPadReviewSubmitBtn]").delegate("span","load", function(){
$("#orderPadReviewSubmitBtn").mousedown(function(){alert("Order Submitted");}); });

私も試しました:

$("#orderPadReviewSubmitBtn").delegate("span","load", function(){
$("#orderPadReviewSubmitBtn").mousedown(function(){alert("Order Submitted");}); })

これらは、上記のボタンがロードされた後にロードされた場合は機能しますが、ボタンがロードされる前にjQueryを実行した場合は機能しません。

私の最終的な目標は、このボタンが読み込まれ、誰かがクリックすると、他の関数を実行できるようにすることです。

何か簡単なことが欠けているような気がしますので、よろしくお願いします。

4

2 に答える 2

1

ロードイベントハンドラーを使用する必要はありません

// bind event handler to parent that exists at the time dom is ready
// it will then listen for click event from element with id=orderPadReviewSubmitBtn
$(function(){ // <-- put your code inside a document.ready function
    $('body').delegate('#orderPadReviewSubmitBtn','click',function(){
        alert("Order Submitted");
    });   
});

body最も近い静的な親要素で置き換える

委任がどのように機能するかを理解していないと思います-そのため、loadイベントが必要だと思います。それがどのように機能するかは、すでに存在し、静的である(つまり、変更されない)親要素にバインドすることです-次に、選択した特定の要素からバブルアップするときに、指定したイベントをリッスンします(この場合、要素はid=orderPadReviewSubmitBtn

于 2012-10-18T20:57:08.290 に答える
0

を使用できます.live()。1.4では減価償却されません。コードは次のようになります。

$("a[id=orderPadReviewSubmitBtn]").live("mousedown", function() {
    alert("Order Submitted");
});​

デモ: http: //jsfiddle.net/SO_AMK/d2SYE/

そして、あなたが言ったように、あなたが別の関数を呼び出したいなら、あなたはこれを使うでしょう:

$("a[id=orderPadReviewSubmitBtn]").live("mousedown", newFunc);

function newFunc() {
    alert("Order Submitted");
}​

デモ: http: //jsfiddle.net/SO_AMK/YwNyP/

于 2012-10-18T21:00:19.297 に答える