Не могу сделать работу closest () и find () - PullRequest
2 голосов
/ 01 февраля 2012

Не могу заставить 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 ]

2 голосов
/ 01 февраля 2012

Вы ссылаетесь на .find () и .closest () из объекта $ (this)..closest () найдет родителей этого объекта, а .find () найдет потомков этого объекта.Если вы хотите глобальный выбор, просто сделайте это ...

$("a.favorites_save:first")

и это для удаления ...

$("a.favorites_delete:first")
2 голосов
/ 01 февраля 2012

Поскольку ваши ссылки находятся внутри <li>, и .find (), и .closest () никогда их не увидят. Эти двое работают только вверх и вниз на одной ветви дерева ...

Вам нужно сделать что-то вроде .closest('action-buttons').find('favorites_delete'), чтобы заставить его работать ...

0 голосов
/ 02 февраля 2012

Решение что-то в этом роде

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

Просто нужно подняться выше на дерево

...