javascript和jquery 獲取觸發事件的元素


一個很簡單的問題,卻因為大意,經常忘了處理,導致程序運行出錯.

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>

    <body>
        <ul>
            <li>
                <ul>
                    <li>listone</li>
                    <li>listtwo</li>
                    <li>listthree</li>
                </ul>
            </li>
        </ul>
        <script>
            var oUl=document.getElementsByTagName('ul')[0];
            var aLi=oUl.getElementsByTagName('li');
            var i=0;
            for(i=0;i<aLi.length;i++){
                aLi[i].onclick=function(){
                    alert(this.innerHTML);
                }
            }
        </script>
    </body>

</html>

我的本意是要在點擊li的時候,彈出li的內容. 比如 "listone" ,"listtwo","listthree".

可是上述代碼並不像想象中那樣工作.

當我點擊listtwo的li時,情況是這樣的:

還沒完,點擊確定,又彈出一個框子:

 

這個框子並不是我們所期望彈出的東西.拿他為什么彈出呢?

回頭看代碼,這是因為listone,listtwo,listthree所在的UL的父元素,也是一個li,這個li也被加上了點擊事件,彈出自己的innerHTML.

 

如何解決?

只要我們告訴javascript,只彈出我們點擊的那個li的內容就可以了.就是觸發點擊事件的那個li.代碼如下:

var oUl=document.getElementsByTagName('ul')[0];
var aLi=oUl.getElementsByTagName('li');
var i=0;
for(i=0;i<aLi.length;i++){
    aLi[i].onclick=function(ev){
    var e=ev||window.event;//獲取事件
    var ele=e.target||e.srcElement;//獲取觸發事件的元素
if(this===ele)//如果這個元素就是觸發事件的元素 alert(ele.innerHTML);//彈出他的內容 } }

問題解決.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM