找到最近的元素

时间:2011-12-21 10:51:57

标签: jquery

我有以下布局:

<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无法在课程span中找到iFoot.fMin? 我使用的是closest,因为此块(widget)可能有几个。

1 个答案:

答案 0 :(得分: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

的兄弟姐妹