我正在替换onclick attr ....
$('#divName').attr('onclick','newFunction()');
function newFunction(){
alert('New Function Success');
}
我当前的HTML是
<div id="divName" onclick="oldFunction()">
在我插入新的attr之后,inspect元素显示了这个
<div id="divName" onclick="newFunction()">
但是当我点击时,没有显示警告信息,所以新功能没有应用于点击事件,任何想法为什么?
答案 0 :(得分:3)
您应该使用不显眼的事件处理程序并使用.on()
附加事件处理程序
var $elem = $('#divName');
//Remove previous event handler
$elem.prop('onclick',null);
//Bind new event handler
$elem.on('click', newFunction);
function oldFunction() {
console.log('old funnction.');
var $elem = $('#divName');
//Remove previous event handler
$elem.prop('onclick', null);
//Bind new event handler
$elem.on('click', newFunction);
console.log('New Event handler attached, click again');
}
function newFunction() {
console.log('New Function Success');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="divName" onclick="oldFunction()">click me</div>
答案 1 :(得分:0)
我不知道该代码的目的是什么。 但我试着给你另一种解决方案。 希望能解决你的问题。
HTML:
<div id="divName" onclick="oldFunction()">
脚本上的:
$('#divName').addClass('newClass');
$('.newClass').click(
function(){
alert('New Function Success');
}
);
如果您需要更改其他功能,可以更改属性。
答案 2 :(得分:0)
由于jQuery提供了.click()函数,因此您可以使用它。 请尝试以下解决方案。 删除onlick并将click()附加到div
$("#divName").attr("onclick","").click(newFunction);
function newFunction(){
alert('New Function Success');
}
答案 3 :(得分:0)
我面临着同样的问题。
在控制台上检查。它显示了onclick="newFunc()"
,但是在检查按钮后,单击了oldFunc()
后它显示了oldFunc()
。
只需用纯JavaScript替换我的代码,即使用document.getElementbyId
并使用setAttribute()
来更新onclick。
var btn=document.getElementById('myBtn');
btn.setAttribute('onclick',"test()");