我正在使用 .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);
如果您没有将最终值应用于元素,则仅进行字符串替换不会做任何事情;这会起作用,但我不推荐它:
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)
注册您的点击处理程序,那就更好了。
另一种方法:
$('.jitu').find('[onclick="show()"]').attr('onclick', 'showme()');
但是,您应该考虑使用更不显眼的方式来绑定事件。例如:
$('.jitu a').click(showme);
这应该可以解决问题:
htm.onclick = function() { showme(); };