2009-10-04 3 views
3

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

<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 является зарезервированным словом и не может использоваться как идентификатор». в чем именно проблема?:

EDIT: К сожалению, я имел в виду <div id="container-1">, а не <div class="container-1">. То же самое для 2-го дивизиона.

+0

fwiw, $ (this) .parent(). Attr ("id"). ReplaceWith (response) .. не выглядит правильно меня . –

+0

RE: ваше редактирование - попробуйте мой обновленный пример. если это не то, что вы хотите, чтобы пройти, или сообщить нам, каков фактический ответ. –

ответ

4

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

$(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

обновлен потенциальным кодом, который вы хотите –

+0

Большое спасибо. Я думаю, что ваш ответ был первым. – royco

0

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

$(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; 
     }); 
    }); 

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

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

Смежные вопросы