2009-03-04 11 views
0

私は、jQueryを使用してアンカータグを動的に生成しています。私はそれにonclick属性を追加しましたが、リンクをクリックするとonclickは起動しません。JQueryで生成されたアンカータグがonclickイベントを発生させないのはなぜですか?

次のように私は、リンクを生成しています:

$(document).ready(function() { 

    var attributes = { 
     "id": "xxx", 
     "onclick": "alert('xxxx');", 
     "href": "https://localhost/widget/TabTest.aspx#" 
    }; 
    var link = $.create("a", attributes); 
    $(link).append("xxxx"); 
    $("#WidgetContainer").append(link); 
}); 
+0

$ .createはjQueryの一部ではありません。私はちょうどそれに精通していないと思った。 –

答えて

4

jQueryのクリック()関数をクリック属性を設定します。

var attributes = { 
    "id": "xxx", 
    "href": "https://localhost/widget/TabTest.aspx#" 
}; 
var link = $.create("a", attributes); 
$(link).append("xxxx").click(function(){ alert("HELLO"); }); 
$("#WidgetContainer").append(link); 

は、あなたが何をしたかおそらく一部のブラウザでは動作しますが、ない他の人が(私はFFでその仕事を持っていたが、IEで失敗するのです)。一般に、jQueryに何か機能がある場合は、それを使用します。


編集: Adam Backstromの質問に対するコメントでは、私は考えました。

$("#someplace").wrapInner("<a href='#'></a>"); 
$("#someplace a").click(function() { 
    alert("Hello"); 
}); 


EDIT 2:この投稿へのコメントから 、最高のアイデアではない、常に(1行でこれを行うにはどのように私は過去にこれをやったとき、私はこのようにそれをやりました):

$("<a id='xxx' href='https://localhost/widget/TabTest.aspx#'>xxxx</a>") 
     .click(function() { alert("Hello"); }) 
     .appendTo($("#WidgetContainer")); 
+0

チャームのように働いた!ありがとう。 –

+0

長すぎるjQueryのライブが長く続く。 appendTo($( "(" Hello ");})を使用すると、1行に完全に書くことができます。 #WidgetContainer ")); – patridge

1

あなたはjQueryの1.3以上を使用している場合は、あなたがあなたのページに追加した< >タグにクリックイベントを添付する結合「ライブ」イベントを使用することができます。たとえば、

$('a').live('click', function (evt) { 
    alert('Hello'); 
    evt.preventDefault(); 
}); 
var link = $.create('a', { 
    'id' : 'xxx', 
    'href' : 'http://localhost/' 
}); 
$('#container').append(link); 
関連する問題