2

无法制作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 代码不能全部包含在内。

4

3 回答 3

2

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

你需要做一些事情.closest('action-buttons').find('favorites_delete')来让它工作......

于 2012-02-01T17:05:26.310 回答
2

您从 $(this) 对象中引用 .find() 和 .closest() 。.closest() 只会找到这个对象的父母,而 .find() 会找到这个对象的孩子。如果您想要全局选择,只需执行此操作...

$("a.favorites_save:first")

这用于删除...

$("a.favorites_delete:first")
于 2012-02-01T17:09:36.303 回答
0

解决方案是这样的

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

只需要在树上更高

于 2012-02-02T18:18:34.010 回答