Чуть более сложная проблема с jQuery Travsersing - PullRequest
0 голосов
/ 30 августа 2009

У меня есть страница, которая отображает результаты поиска и DOM, как показано ниже:

div.mcoupdisplay
    div.mcoup //search result 1
            div.lcoup
        div.rcoup
            div.rcoupmeta
                a.rcoupedit
                a.rcoupdelete
        div.updcoup
        div.delcoup
    div.mcoup //search result 2
        div.lcoup
        div.rcoup
            div.rcoupmeta
                a.rcoupedit
                a.rcoupdelete
        div.updcoup
        div.delcoup

В настоящее время я скрываю все div.updcoup и div.delcoup и добавляю функцию slideToggle со следующим jQuery:

    $('div.delcoup').hide();
    $('a.rcoupdelete').click(function() {
        $(this).closest('div.mcoup').find('div.delcoup').slideToggle(400);
        $('div.updcoup').slideUp(400);
        $('div.crecoup').slideUp(400);
        return false;
    });

    $('div.updcoup').hide();
    $('a.rcoupedit').click(function() {
        $(this).closest('div.mcoup').find('div.updcoup').slideToggle(400);
        $('div.delcoup').slideUp(400);
        $('div.crecoup').slideUp(400);
        return false;
    });

Скажем, div.updcoup переключается в результате поиска 1, затем я переключаю div.updcoup в результате поиска 2. Как я могу сдвинуть видимый результат поиска div.updcoup 1, когда переключаю div.updcoup в результате поиска 2?

Ответы [ 3 ]

0 голосов
/ 30 августа 2009

Хотите удалить предмет из набора? Если так, сделайте это:

var thisDelcoup = $(this).closest('div.mcoup').find('div.delcoup').slideToggle(400);
$('div.delcoup').not(thisDelcoup).slideUp(400);
$('div.updcoup').slideUp(400);
$('div.crecoup').slideUp(400);
0 голосов
/ 30 августа 2009

Меня вдохновили комментарии Страгера. Его было не совсем там, окончательный, рабочий ответ ниже:

    $('div.delcoup').hide();
    $('a.rcoupdelete').click(function() {
        var thisDelcoup = $(this).closest('div.mcoup').find('div.delcoup');
        $(this).closest('div.mcoup').find('div.delcoup').slideToggle(400);
        $('div.delcoup').not(thisDelcoup).slideUp(400);
        $('div.updcoup').slideUp(400);
        $('div.crecoup').slideUp(400);
        return false;
    });

    $('div.updcoup').hide();
    $('a.rcoupedit').click(function() {
        var thisUpdcoup = $(this).closest('div.mcoup').find('div.updcoup');
        $(this).closest('div.mcoup').find('div.updcoup').slideToggle(400);
        $('div.delcoup').slideUp(400);
        $('div.updcoup').not(thisUpdcoup).slideUp(400);
        $('div.crecoup').slideUp(400);
        return false;
    });

Спасибо за помощь, Страгер!

0 голосов
/ 30 августа 2009

Ваш вопрос мне не очень понятен, но я читаю только это:

У меня вопрос, какая цепочка будет работать лучше всего для нацеливания на все видимые div.updcoup и div.delcoup

Вы хотите это:

$('div.updcoup:visible, div.delcoup:visible').slideUp(400);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...