1. 程式人生 > >單選按鈕點選一下觸發兩次事件

單選按鈕點選一下觸發兩次事件

剛剛在專案中發現,切換單選按鈕,卻觸發兩次點選事件;如下圖所示

這裡寫圖片描述

這裡觸發了兩次事件,然後呼叫了兩次介面:

這裡寫圖片描述
百度了一下,沒找到答案,然後還是谷歌靠譜,簡單來說,就是因為點選label的時候,事件冒泡一次,同時會觸發關聯的input的click事件,導致事再次觸發事件

這和html結構有很大的關係:

<div class="belongCompany fl">
        <label for="" class="col-md-1 col-xs-1 control-label">所屬公司 :</label>
        <label class
="radio "> <input type="radio" value="1" name="orginType" checked> 省公司 </label> <label class="radio "> <input type="radio" value="2" name="orginType"> 專業公司&直屬單位 </label> <label class="radio " style="margin-left: 88px;"
> <input type="radio" value="3" name="orginType" class="notMove"> 非移動員工 </label> </div>

可以看到 input是包裹在lable裡面,所以才會導致上述情況的發生

解決辦法:

 $("label").click(function (e) {
         if ($(e.target).is("input"))
         return;
});
        如果事件源是input,那麼就return