簡體   English   中英

選擇單擊的元素而不是其父元素

[英]Selecting the clicked element and not its parents

我有一堆嵌套列表:

<ul>
    <li>item 1</li>
    <li>item 2</li>
    <li>item 3
        <ul>
            <li>child-1</li>
            <li>child-2
                <ul>
                    <li>grand-child 1</li>
                </ul>
            </li>
        </ul>
    </li>
</ul>

對於jQuery,單擊或懸停時,我要使用項目(li)。 但這給了我它的父母。 如下所示:如果單擊(或懸停)孫子1,則$(this)返回ITEM-3(父母的父母)

我的jQuery代碼:

$('ul li').live('click', function(e) {
    someVar = $(this).data("dataname"); // (can be .attr(""), etc.);
});

單擊任何一個Li時,如何使用特定的Li,而不是嵌套的父?

這會有所幫助嗎? 如果看到console.log,則僅返回當前單擊的項目。 此處閱讀有關stopPropagation的文檔。

“文檔指出stopPropagation阻止事件使DOM樹冒泡,從而阻止任何父處理程序收到該事件的通知。”

我還更新了live,因為live從1.7開始不推薦使用

$('ul li').on('click', function(e) {
   e.stopPropagation();
   console.log($(this)); 
}); 

我認為以下是您要尋找的東西,

$('ul li').live('click', function(e) {
    e.stopPropagation();
    someVar = $(this).data("dataname"); 
});

e.stopPropagation(); 停止傳播到其他匹配ul li任何事件

注意:如果不贊成使用.live請使用.on如果您使用的是jQuery v1.7 .on

$(document).on('click', 'ul li', function(e) {
    e.stopPropagation();
    alert($(this).text()); // (can be .attr(""), etc.);
});

DEMO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM