-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

如果您没有将最终值应用于元素,则仅进行字符串替换不会做任何事情;这会起作用,但我不推荐它:

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 回答
0

另一种方法:

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

http://jsfiddle.net/CfpBP/

但是,您应该考虑使用更不显眼的方式来绑定事件。例如:

$('.jitu a').click(showme);
于 2013-04-13T18:21:28.787 回答
-1

这应该可以解决问题:

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