簡體   English   中英

jQuery .data()返回值且未定義

[英]jQuery .data() returning value AND undefined

 // jQuery: $('.slidebutton').click(function(event) { var slide = $(this).data('slide'); slide = "#slide-"+slide; alert(slide); }); 
 <!-- HTML: --> <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="one-sixth"><a data-slide="1" class="slidebutton">RECRUITING</a></div> <div class="one-sixth slidebutton"><a data-slide="2" class="slidebutton">ONBOARDING</a></div> <div class="one-sixth slidebutton"><a data-slide="3" class="slidebutton">PERFORMANCE</a></div> <div class="one-sixth slidebutton"><a data-slide="4" class="slidebutton">LEARNING</a></div> <div class="one-sixth slidebutton"><a data-slide="5" class="slidebutton">HRMS</a></div> <div class="one-sixth slidebutton"><a data-slide="6" class="slidebutton">TALENT APPS</a></div> 

結果是兩個警報。 第一個是正確的,但是第二個總是#slide-undefined

我要去哪里錯了?

click事件冒泡到父<div> ,它也具有slidebutton類。 有兩種可能的解決方案:

  1. 防止事件冒泡:

     $('.slidebutton').click(function(event){ event.stopPropagation(); // http://api.jquery.com/event.stoppropagation/ var slide = $(this).data('slide'); slide = "#slide-"+slide; alert(slide); }); 

      $('.slidebutton').click(function(event){ event.stopPropagation(); // http://api.jquery.com/event.stoppropagation/ var slide = $(this).data('slide'); slide = "#slide-"+slide; alert(slide); }); 
      <!-- HTML: --> <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="one-sixth"><a data-slide="1" class="slidebutton">RECRUITING</a></div> <div class="one-sixth slidebutton"><a data-slide="2" class="slidebutton">ONBOARDING</a></div> <div class="one-sixth slidebutton"><a data-slide="3" class="slidebutton">PERFORMANCE</a></div> <div class="one-sixth slidebutton"><a data-slide="4" class="slidebutton">LEARNING</a></div> <div class="one-sixth slidebutton"><a data-slide="5" class="slidebutton">HRMS</a></div> <div class="one-sixth slidebutton"><a data-slide="6" class="slidebutton">TALENT APPS</a></div> 

  2. 僅將事件偵聽器附加到每個子<a>

     $('a.slidebutton').click(function(){ // a.slidebutton var slide = $(this).data('slide'); slide = "#slide-"+slide; alert(slide); }); 

      $('a.slidebutton').click(function(){ // a.slidebutton var slide = $(this).data('slide'); slide = "#slide-"+slide; alert(slide); }); 
      <!-- HTML: --> <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="one-sixth"><a data-slide="1" class="slidebutton">RECRUITING</a></div> <div class="one-sixth slidebutton"><a data-slide="2" class="slidebutton">ONBOARDING</a></div> <div class="one-sixth slidebutton"><a data-slide="3" class="slidebutton">PERFORMANCE</a></div> <div class="one-sixth slidebutton"><a data-slide="4" class="slidebutton">LEARNING</a></div> <div class="one-sixth slidebutton"><a data-slide="5" class="slidebutton">HRMS</a></div> <div class="one-sixth slidebutton"><a data-slide="6" class="slidebutton">TALENT APPS</a></div> 

暫無
暫無

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

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