簡體   English   中英

僅觸發一次點擊

[英]Trigger click only once

有一個測驗插件,單擊“下一步”按鈕后,提交答案。 我希望在單擊答案后立即觸發它。 我設法觸發了一次點擊,但是它點擊了所有問題。 如何使其僅單擊一次?

我的密碼

$(".wpProQuiz_questionListItem").each(function(){
   $(this).find("label").click(function(event){
      $(this).find(".wpProQuiz_questionInput").prop('checked', true);
      $(this).parents().find(".wpProQuiz_button").click();
   });
});

html

<ol class="wpProQuiz_list">
   <li class="wpProQuiz_listItem">
      <ul class="wpProQuiz_questionList">
         <li class="wpProQuiz_questionListItem"> <!-- that's the answer -->
            <label>
                <input class="wpProQuiz_questionInput" type="radio" name="question_1_1" value="1"> <img src="http://media-cdn.tripadvisor.com/media/photo-s/01/08/76/63/bahia-de-caraquez.jpg" class="questionimage">                                   
            </label>
            <input name="next" value="Next" class="wpProQuiz_button wpProQuiz_QuestionButton" style="float: right;" type="button">
         </li>
      </ul>
      <input type="button" name="next" value="Next" class="wpProQuiz_button wpProQuiz_QuestionButton" style="float: right;">
   </li>
   <li class="wpProQuiz_listItem">Same code goes here</li>
</ol>

問題是您正在所有父<ol class="wpProQuiz_list">中搜索按鈕,包括元素<ol class="wpProQuiz_list"> ,該元素返回列表中的所有按鈕。 因此,您必須定義要為其找到按鈕的父項。

長話短說-解決方法是:

$(this).parents(".wpProQuiz_questionListItem").find(".wpProQuiz_button").click();

還有一個工作片段

 $(".wpProQuiz_questionListItem").each(function(){ $(this).find("label").click(function(event){ alert($(this).attr("id")); $(this).find(".wpProQuiz_questionInput").prop('checked', true); $(this).parents(".wpProQuiz_questionListItem").find(".wpProQuiz_button").click(); event.preventDefault(); }) }); $(".wpProQuiz_button").on("click", function() { alert($(this).attr("id")); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script> <ol class="wpProQuiz_list"> <li class="wpProQuiz_listItem"> <ul class="wpProQuiz_questionList"> <li class="wpProQuiz_questionListItem"> <!-- that's the answer --> <label id="one"> <input class="wpProQuiz_questionInput" type="radio" name="question_1_1" value="1"> <img src="http://media-cdn.tripadvisor.com/media/photo-s/01/08/76/63/bahia-de-caraquez.jpg" class="questionimage"> </label> <input id="btn-one" name="next" value="Next" class="wpProQuiz_button wpProQuiz_QuestionButton" style="float: right;" type="button" /> </li> </ul> <input id="btn-one-outer" type="button" name="next" value="Next" class="wpProQuiz_button wpProQuiz_QuestionButton" style="float: right;"> </li> <li class="wpProQuiz_listItem"> <ul class="wpProQuiz_questionList"> <li class="wpProQuiz_questionListItem"> <!-- that's the answer --> <label id="two"> <input class="wpProQuiz_questionInput" type="radio" name="question_1_1" value="2"> <img src="http://media-cdn.tripadvisor.com/media/photo-s/01/08/76/63/bahia-de-caraquez.jpg" class="questionimage"> </label> <input id="btn-two" name="next" value="Next" class="wpProQuiz_button wpProQuiz_QuestionButton" style="float: right;" type="button" /> </li> </ul> <input id="btn-two-outer" type="button" name="next" value="Next" class="wpProQuiz_button wpProQuiz_QuestionButton" style="float: right;"> </li> </ol> 

我認為event.stopImmediatePropagation(); 會幫助你

您的代碼示例:

$(".wpProQuiz_questionListItem").each(function(){
   $(this).find("label").click(function(event){
      event.preventDefault();   
      event.stopImmediatePropagation();
      $(this).find(".wpProQuiz_questionInput").prop('checked', true);
      $(this).parents().find(".wpProQuiz_button").trigger('click');
   });
});

暫無
暫無

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

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