2016-06-09 92 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();}); 
});