Jquery $ (это) относительная ссылка - PullRequest
1 голос
/ 11 января 2012

Итак, я создаю свое собственное меню панировочных сухарей с помощью jQuery, так как я не хотел загружать другой раздутый плагин.У меня есть этот код:

    function go_back(sec) {
    $('.content').html('<p>Loading</p>').load('_library_q.php?','sec='+sec);
    $(this).nextAll().remove();
}

, который вызывается при нажатии на ссылку.Он загружает область содержимого и удаляет следующие ссылки.Это пример формата каждой ссылки:

<span> &gt; <a style="cursor:pointer" OnClick="go_back('4');">Foo</a></span>

Загрузка работает, но следующие ссылки не удаляются.Я полагаю, что это потому, что он ищет следующее <a>, но не находит его.Мне нужно будет сослаться на родителя <span>.Я попытался использовать $(this).parent().nextAll().remove();, однако это не работает либо.Любая помощь?

Ответы [ 2 ]

3 голосов
/ 11 января 2012

В качестве быстрого исправления я бы предложил:

  function go_back(sec, elem) {
    $('.content').html('<p>Loading</p>').load('_library_q.php?','sec='+sec);
    $(elem).parent().nextAll().remove();
  }

html:

<span> &gt; <a style="cursor:pointer" OnClick="go_back('4', this);">Foo</a></span>

Но в долгосрочной перспективе javascript в html ужасен, поэтому вам следует полностью от него избавитьсяДизайн всего этого, не полагаясь на встроенный JavaScript в HTML.

демо: http://jsfiddle.net/gHh7D/

0 голосов
/ 11 января 2012

Вы не можете вызвать $ (this), поскольку вы вызываете глобальную функцию. Вместо этого, одним из способов решения этой проблемы является цикл по ссылкам и использование функции .click () JQuery -

$('a').each(function() {
    $(this).click(function() {
        $('.content').html('<p>Loading</p>').load('_library_q.php?', 'sec=' + $(this).attr('id'));
        $(this).parent().nextAll().remove();
    });
});

Я добавил атрибут id для каждой ссылки, чтобы вы могли использовать значение id для функции загрузки. Вы можете увидеть пример здесь: http://jsfiddle.net/dxAyT/

...