2011-12-21 92 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