2016-06-09 60 views
0

我有以下代码差异onclick属性

<!DOCTYPE html> 
<html> 
<head> 
<script type="text/javascript" src="jquery-1.12.4.js"></script> 
    <title> 
     HelloWorld JQuery 
    </title> 
</head> 
<body> 
<p> 
    Lets play around with JQuery 
</p> 
</body> 

<script > 

    function changeColorOnClick() 
    { 
     console.log("changed color"); 
    } 
    var pTag=$('p'); 
    pTag.on('click',changeColorOnClick); 
</script> 
</html> 

事件监听器工作正常,但是当我在我的浏览器检查元素p标签还没有相关的onClick属性,为什么呢? 不管我们通过脚本绑定侦听器,还是在html元素标记中提到处理器方法,都不一样吗?

回答

0

当您通过document.getElementById('myElement').onclick$('#myElement').on(...)将事件处理程序附加到元素时,它不会设置或更改元素的onClick属性。它只是附加内部处理程序。

要更改元素的onClick属性,必须使用$(elem).attr('onClick','click_handler_func');。然后,这个属性将显示在DOM检查器中。

0

我看到有几个错误。

  1. 最好在document.ready调用中绑定函数;那么只有在DOM完全准备好后才会绑定它
  2. 绑定时使用闭包。

这应做到:

function changeColorOnClick() 
{ 
    console.log("changed color"); 
} 

$(document).ready(function(){ 
    var pTag=$('p'); 
    pTag.on('click',function(){changeColorOnClick();}); 
});