attr new onclick函数不起作用

时间:2017-06-04 18:10:13

标签: jquery

我正在替换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()">

但是当我点击时,没有显示警告信息,所以新功能没有应用于点击事件,任何想法为什么?

4 个答案:

答案 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()");