jQuery: взломать ссылку и найти ее родителя - PullRequest
3 голосов
/ 04 октября 2009

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

<div class="container-1">
  <a href="/foo.html">Add content</a>
</div>
 <div class="container-2">
  <a href="/bar.html">Add content</a>
</div>

Вот что у меня есть с jQuery:

$(function() {
    $(".pager A").live("click",
    function() {
        $.get($(this).attr("href"),
        function(response) {
            $(this).parent().attr("id").replaceWith(response); // This is wrong
        });
        return false;
    });
});

Строка с комментарием "Это неправильно" не имеет то, что я хочу за $ (это). Кажется, он содержит результат предыдущего выражения, а не элемент, который я выбрал (".pager A").

Как я могу это сделать?

Дополнительный вопрос: Visual Studio жалуется, что ".get является зарезервированным словом и не должен использоваться в качестве идентификатора". В чем именно проблема?

РЕДАКТИРОВАТЬ: Извините, я имел в виду <div id="container-1">, а не <div class="container-1">. То же самое для 2-го деления.

Ответы [ 2 ]

4 голосов
/ 04 октября 2009

Попробуйте сохранить ссылку на текущий контекст выполнения, где он указывает на якорь, к которому будет обращаться позже в обратном вызове:

$(function() {
    $(".pager A").live("click",
    function() {
        var el = this;
        $.get($(el).attr("href"),
        function(response) {
            $(el).parent().html( response ); // is this what you want? .attr('id') would return a string and you can't call jQuery methods on a string.
        });
        return false;
    });
});
0 голосов
/ 04 октября 2009

Прежде всего:

    $(function() {
      $(".pager A").live("click",
        function() {
          var $link = $(this);
            $.get($(this).attr("href"),
            function(response) {
              $link.parent().attr("id").replaceWith(response); // This is wrong
            });
          return false;
        });
    });

Вы не должны использовать $ (this) в функции обратного вызова.

И второе - родительский элемент вашей ссылки не имеет атрибут id. Если вы хотите заменить его содержимое, используйте что-то вроде html () или text ()

...