.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>
.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>
使用する必要があります:-
$('.jitu a').attr('onclick','showme()');
あなたのコードの説明:- あなたがしているのは、実際の 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);
別のアプローチ:
$('.jitu').find('[onclick="show()"]').attr('onclick', 'showme()');
ただし、より目立たない方法でイベントをバインドすることを検討する必要があります。例えば:
$('.jitu a').click(showme);
要素に最終的な値を適用していない場合、文字列の置換を行っても何も起こりません。これは機能しますが、お勧めしません。
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)
、クリックハンドラーを登録するために使用するだけであれば、さらに良いでしょう。
代わりに .attr( attributeName, value )関数を使用してください。
これでうまくいくはずです:
htm.onclick = function() { showme(); };