6

jquery経由で新しい要素を追加しました。ここで、要素がクリックされたときに関数をトリガーする必要があります。これには多くの答えがあることは知っていますが、私にはうまくいかないようです。ここで何が間違っているのかわかりません。

私が試してみました:

new_ele = "<a>click me</a>"
new_ele.click(function() {alert('xxxx');}); 
other_ele.append(new_ele);

これは、new_ele が追加される前に失敗します。

私も試しました(上記の2行目の代わりに)

new_ele.onclick = function() { alert('blah'); };

これにより要素が追加されますが、クリックしても何も起こりません。

new_ele.on('click',function() {alert('ddd');});

これも要素が追加される前に失敗します。

4

3 に答える 3

10

次のように変更します。

new_ele = $("<a>click me</a>");
new_ele.click(function() {alert('xxxx');}); 
other_ele.append(new_ele);

jQueryハンドラーを追加するに.click()は、メソッドを呼び出すことができるjQueryオブジェクトが必要です.click()。あなたのコードは次のことを行おうとしていました:

"<a>click me</a>".click(function() {alert('xxxx');}); 

文字列にクリックメソッドがないため、これは明らかに機能しません。代わりに、そのHTML文字列を呼び出して実際のjQueryオブジェクトに変換する必要があります$()

于 2012-10-06T06:23:16.553 に答える
4

.clickme が dom に追加される前後の任意の場所で定義されます。確認する必要があるのは、'body' またはその他の要素が DOM に既に存在することだけです。2 番目の引数は、トリガーするパスです。

$('body').on('click', 'a.clickme', function(e){
  e.preventDefault();
  console.log("clicked!");
});

$new_ele = $('<a href="#" class="clickme">click me</a>');
$("body").append( $new_elem );
于 2012-10-06T06:44:01.660 に答える
1

あなたが持っているステートメントは、要素ではなく、刺し傷を作成するだけです。新しく作成した要素をDOMに追加できなかったと思います。

new_ele = $("<a>click me</a>");

new_ele.appendTo(someParentElement);

new_ele.on('click',function() {alert('ddd');});
于 2012-10-06T06:22:43.683 に答える