无法使nearest()和find()工作

时间:2012-02-01 16:44:23

标签: jquery closest

无法让closest()find()工作:

<script type="text/javascript">
    $('a.favorites_save') .live('click', function(e) {
        thisObj = this;
        e.preventDefault();
        var link = $(this).attr('href')
        alert(link)
        $.get(link, function() {
            $(thisObj).find('a.favorites_delete:first').show();
            $(thisObj).hide();
        });
        return false;
    });

    $('a.favorites_delete') .live('click', function(e) {
        thisObj = this;
        e.preventDefault();
        var link = $(this).attr('href')
        $.get(link, function(data) { 
            $(thisObj).closest('a.favorites_save:first').show();
            $(thisObj).hide();
        });
        return false;
    });
</script>

HTML

<ul class="action-buttons">
    <li><a href="#link" class="portfolio">Add to portfolio</a></li>
    <span class="favorites_status"></span>
    <li><a class="favourites favorites_save" style="display:none;" href="/_web_includes/faves/reference/569">Add to Favourites</a></li>
    <li class="current"><a class="favourites favorites_delete" href="/_web_includes/faves/reference/569/delete">Remove Favourite</a></li>

当我按删除收藏夹时,它隐藏了一个链接,但show()不起作用,与find()方法相同。 HTML源代码中重复的HTML代码无法全部实现。

3 个答案:

答案 0 :(得分:2)

因为您的链接位于<li>内,所以'.find()'和'.closest()'都不会看到它们。这两个人只在树的同一个分支上下工作......

您需要执行.closest('action-buttons').find('favorites_delete')之类的操作才能让它发挥作用......

答案 1 :(得分:2)

您正在引用$(this)对象中的.find()和.closest()。 .closest()只会找到这个对象的父级,而.find()会找到这个对象的子级。如果你想要一个全局选择,就这样做......

$("a.favorites_save:first")

这是删除...

$("a.favorites_delete:first")

答案 2 :(得分:0)

解决方案是那样的

$(thisObj).closest("ul").find('favorites_delete');

只需要在树上更高