2011-12-21 154 views
1

我有以下佈局:找到最接近的元素

<div class="widgets"> 
       <div class="rating_block"> 
        <span class="iFoot fMin"><%= film.GoingCount %></span> 
        <div class="stars_rating"> 
         <div class="stars_off"></div> 
         <div class="stars_on"></div> 
        </div><!-- .stars_rating--> 

        <span class="num_rating">(<%= film.Rating %>)</span> 
        <div class="expand"></div> 
       </div><!-- .rating_block--> 

       <div class="voice_block"> 
        <div class="going" filmid="<%=film.OID %>"> 
         <a href="">I'm going!</a> 
         <div id="going_too">Going too: <%= film.GoingCount %></div> 
        </div><!-- .going--> 

        <div class="data_for_rating"> 
         <div>Vote</div> 
          <div class="star_for_rating"> 
           <ul> 
            <li> 
             <a href="#">1</a> 
            </li> 
            <li> 
             <a href="#">2</a> 
            </li> 
            <li> 
             <a href="#">3</a> 
            </li> 
            <li> 
             <a href="#">4</a> 
            </li> 
            <li> 
             <a href="#">5</a> 
            </li> 
           </ul> 
          </div><!-- .star_for_rating--> 
         <div>Average: 4,5 (89)</div> 
        </div><!-- .data_for_rating--> 
       </div><!-- .voice_block--> 
      </div><!-- .widgets--> 

我的js函數:

function setUpUpdateGoingCount() { 
      $("div.going a").click(function (e) { 
       var goingToo = $(this); 
       e.preventDefault(); 
       var filmId = $(this).parent("div").attr("filmid"); 
       $.post("/Cinema/UpdateGoingCount", { id: filmId }, function (obj) { 
        if (obj.Success) { 
         goingToo.parent("div").find("#going_too").text("going too: " + obj.Result); //work 
         goingToo.closest(".rating_block").find(".iFoot.fMin").text(obj.Result); //not work 
        } 

       }); 
      }); 
     }; 

爲什麼jQuery的不能找到spaniFoot.fMin類? 我正在使用closest,因爲此塊(widget)可能是幾個。

回答

7

goingToo.closest(".rating_block")應該是這裏的問題。

最近的作品是這樣的:

獲取的選擇相匹配,開始在當前元素,並通過DOM樹前進了第一個元素。

通過通過DOM樹前進了,也不會有一個.rating_block,只有.voice_block

你可以做,而不是執行以下操作:

goingToo.closest(".voice_block").prev(".rating_block").find(".iFoot.fMin") 

這將搶最接近.voice_block,和那麼以前的兄弟與類rating_block

+0

謝謝,它的工作。但我認爲這更好:goingToo.closest(「。widgets」)。find(「。iFoot.fMin」)。text(obj.Result); – user348173 2011-12-21 11:03:37

+0

假設'.widgets'不包含幾個評級和語音模塊,在這種情況下,我會使用我建議的解決方案。 – 2011-12-21 11:05:42