單選按鈕點選一下觸發兩次事件
阿新 • • 發佈:2019-01-30
剛剛在專案中發現,切換單選按鈕,卻觸發兩次點選事件;如下圖所示
這裡觸發了兩次事件,然後呼叫了兩次介面:
百度了一下,沒找到答案,然後還是谷歌靠譜,簡單來說,就是因為點選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