簡體   English   中英

為什么偵聽器激活兩次?

[英]Why does listener activate twice?

我有以下html:

<ul id="all-terminals">

        <li data-terminal-id="101" class="">
            <label>
                <input type="radio" name="terminal" class="all" data-terminal-id="101">
                <a ...></a>

               ...
            </label>
        </li>

        <li data-terminal-id="100" class="active">
            <label>
                <input type="radio" name="terminal" class="all" data-terminal-id="100">
                <a ..></a>

               ...
            </label>
        </li>

        <li data-terminal-id="102" class="">
            <label>
                <input type="radio" name="terminal" class="all" data-terminal-id="102">
                <a...></a>

              ...
            </label>
        </li>
    </ul>

我編寫了以下偵聽器:

$(document).on('click', '#all-terminals li label', function(){alert(123)});

當我單擊標簽時,我看到警報執行了twise。

為什么?

單擊label自動在其中的input上創建click事件。

假設所有標簽都有輸入,則只需更改為:

$(document).on('click', '#all-terminals li input', function(event) {
  alert(123);
});

小提琴

不確定原因,但是mouseup可以工作。

$(document).on('mouseup', '#all-terminals li label', function(){alert(123)});

我認為您的情況正在冒泡。 閱讀有關冒泡和捕獲的信息

我不太確定,但是我認為當您點擊標簽時,您點擊了其子重疊元素中的2個。 由於它們是標簽的一部分,但仍是單獨的元素,因此會在標簽上觸發兩個click事件。

在小提琴上,似乎是[a]元素與...重疊

暫無
暫無

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

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