簡體   English   中英

點擊事件不適用於jQuery

[英]On click event not working with jQuery

我正在使用jQuery為我的下拉模式之一附加單擊處理程序。 我使用相同的語法打開模式,並且效果很好。 但是,當我想關閉模式時,單擊似乎不起作用。

 // When the user clicks the button, open the modal $("#requestQuoteNavMap").click(function() { $("#myModal").show(); }); // When the user clicks close, close the modal $("#close").click(function() { $("#myModal").hide(); }); 
 .modal { background: white; border: 1px solid black; } .close { background: red; color: white; padding: 5px; font: bold 20px Verdana; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="requestQuoteNavMap"> <!-- The Modal --> <div id="myModal" class="modal"> <!-- Modal content --> <div class="modal-content"> <div class="modal-header" id="modal-header"> <span class="close" id="close">×</span> <h3 class="modalHeaderTxt">Header</h3> </div> <div class="modal-body"> <!--content here--> </div> <div class="modal-footer" id="modal-footer">Post</div> </div> </div> </div> 

由於關閉按鈕位於div requestQuoteNavMap ,因此對關閉按鈕的任何單擊也將被識別為對div的單擊。 這將觸發兩個點擊事件,從而先隱藏然后顯示模式。

為防止這種情況,您需要停止單擊事件在單擊時冒泡傳播到關閉按鈕的父級(div)。 您可以通過在關閉按鈕的click事件中調用event.stopPropagation來實現。

例如

$("#close").click(function(event) {
  $("#myModal").hide();
  event.stopPropagation();
});

這是一個顯示問題的jsfiddle。

https://jsfiddle.net/e4tw7d5k/13/

當您單擊關閉時,您立即觸發了兩個點擊事件,因為關閉位於#requestQuoteNavMap內部。 javascript中的事件會首先觸發您單擊的元素,然后一次“冒泡”到包含該元素的每個元素。 使用event.stopPropagation()可以防止click事件傳播(冒泡)到其他任何元素。

 // When the user clicks the button, open the modal $("#requestQuoteNavMap").click(function(){ $("#myModal").show(); }); // When the user clicks anywhere outside of the modal, close it $("#close").click(function(e){ e.stopPropagation(); $("#myModal").hide(); }); 
 .modal { display: block; background: #eee; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="requestQuoteNavMap"> <!-- The Modal --> <div id="myModal" class="modal"> <!-- Modal content --> <div class="modal-content"> <div class="modal-header" id="modal-header"> <a href="#" class="close" id="close">×</a> <h3 class="modalHeaderTxt">Header</h3> </div> <div class="modal-body"> <!--content here--> </div> <div class="modal-footer" id="modal-footer">Post</div> </div> </div> </div> 

暫無
暫無

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

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