2012-01-16 17 views
0

以下のスクリプトは、$ .post()レスポンスにエラーがある場合、urlを生成します。生成されたURLに関数を添付できるように.on()を使用しようとしていますが、動作しません。 DOM内にURLを追加すると($ .postなし)、それは魅力的な働きをしますが、URLが$ .post()内で生成された場合は動作したくありません。どのように私はそれを働かせることができます上の任意のアイデアやソリューション?あなたのコードで

 

$(".addDoctor").on("click", function(event){ 
    alert("test"); 
}); 
 
+0

機能をテストするために、私はLINKを作成しました。これはうまくいきます。$ .post()を使用してURLにDOMを追加すると機能しません。 – mauzilla

答えて

2

$('.test')、あなたのDOMの「テスト」という名前のクラスを持つすべての要素を検索し、それらにクリックリスナを追加します。

// Do the database check: 
$.post("test.php",{searchFor : search},function(data) { 
     if(data.response == true) { 
      // DO SOME STUFF 
     } else if(data.response == false && data.error == "noDoc") { 
      $("#resultsTable").html("<tr><td colspan='6'><p><strong>No user found, <a href='#' class='addDoctor'>Click here</a> to add a doctor.</strong></p></tr>"); 
     } else { 
      $("#resultsTable").html("<tr><td colspan='6'><p><strong>"+data.error+"</strong></p></tr>"); 
     } 
    }); 
}); 

$(".addDoctor").on("click",function() { 
    alert("test"); 
    return false; 
}); 
+0

こんにちはデビッド、私は自分のコードで私の元の投稿と間違いをお詫び申し上げます。 .on()をテストして作成したクラスでテストしたところ、.addDoctorに名前を付け直したことはありません。 .addDoctorクラスは、 $ .post()内のelse ifステートメント内に作成されます。 – mauzilla

+0

@Mauritz: '* .addDoctor'の' href = "#" 'が文字列を終了するので、現在の*コードは間違っています。それを 'href = \"#\ "'に置き換えてください。これを修正すると、 '$(document).on( 'click'、 '.doctor'、callback)'が動作するはずです。 –

+0

私は両方を行いましたが、スクリプトはまだURLの提出を続けます(falseを返すことで失敗しません)。コンソールはエラーを出さないので、正しく使用していないと思っています。私は$( "document")の上にあなたのオプションを試しました。( "click"、 "。addDoctor"、function(){function stuff});成功はない。 .on()は$ .post()内のDOMに追加されたURLを使って動作しますか? – mauzilla

0

はあなたのような何かを望むかもしれません。これは、.onへの呼び出しが実行されているときに検出できる要素にのみ影響します(つまり、実際のクリックが発生したときはではなく)。

あなたは後.onへの呼び出しをテストクラスを持つ要素を追加する場合は、すべてのあなたの.test要素の親になる要素の.onを呼び出す必要があります、そしてそれが破壊されることはありません。

$(document).on('click', '.test', function() { 
    alert('test'); 
}); 

最適なパフォーマンスを得るには、可能な限り近い親を選択して、適格な要素のDOMのより小さな部分を検索する必要があります。 documentの使用は必ずしも理想的なわけではありませんが、あなたのDOMを知らなくても私が想定できる最も近いものです。

+0

これは私のコードで間違いでした私が質問したときに。私はそれを変更しましたが同じ問題 – mauzilla