-1

.replace メソッドを使用onclickしてアンカー タグの関数を置き換えていますが、機能していません。

<script type="text/javascript">
$(function(){
var htm= $('.jitu').html();
htm.replace("show()",'showme()');
})
</script>

<div class="jitu"><a href="#" onclick="show()">me</a> </div>
4

5 に答える 5

1

使用する必要があります:-

$('.jitu a').attr('onclick','showme()');

http://jsfiddle.net/Fxfvn/

あなたのコードの説明:- あなたがしているのは、実際の DOM ではなく文字列を置き換えるだけです。また、これは属性を変更する理想的な方法ではありません。ここでhtmlは単なるhtml文字列であり、参照はありません...

var htm= $('.jitu').html();
htm.replace("show()",'showme()');

jqueryを使っているので。直接バインドできます

$('.jitu a').removeAttr('onclick').click(showme); //(if you have onclick. to avoid duplicate alert)

そうしないと

$('.jitu a').click(showme);
于 2013-04-13T18:17:37.253 に答える
0

別のアプローチ:

$('.jitu').find('[onclick="show()"]').attr('onclick', 'showme()');

http://jsfiddle.net/CfpBP/

ただし、より目立たない方法でイベントをバインドすることを検討する必要があります。例えば:

$('.jitu a').click(showme);
于 2013-04-13T18:21:28.787 に答える
0

要素に最終的な値を適用していない場合、文字列の置換を行っても何も起こりません。これは機能しますが、お勧めしません。

var $jitu = $('.jitu');
$jitu.html($jitu.html().replace('show()', 'showme()'));

より正しい方法は、古いものをフックから外してonclick、新しいクリック ハンドラーに置き換えることです。

$('.jitu > a')
    .prop('onclick', null)
    .on('click', showme);

デモ

onclick="show()"そもそもインラインさえ持たず$(element).on(event, fn)、クリックハンドラーを登録するために使用するだけであれば、さらに良いでしょう。

于 2013-04-15T04:18:53.380 に答える
0

代わりに .attr( attributeName, value )関数を使用してください。

于 2013-04-13T18:17:58.420 に答える
-1

これでうまくいくはずです:

htm.onclick = function() { showme(); };
于 2013-04-13T18:19:04.543 に答える