当一个链接被点击时,获取另一个类的内容

问题描述:

我正在尝试使用Wordpress的“回复”按钮进行评论,并使其获取您正在回复的评论的用户名,并将其发布到评论textarea框中@USERNAME当一个链接被点击时,获取另一个类的内容

下面是我的Wordpress评论的输出。第6行的存在,有一个类名url一个链接,链接文本是jasondavis

下越往下第15行存在的回复链接,它具有类的comment-reply-link

当用户点击该回复链接,我想在这种情况下获得用户名jasondavis,所以我可以稍后将其插入到textarea框中。

我认为这是可以使用jQuery来完成,假设有多个被点击的回复链接,所以当页面上这些评论的,它必须足够聪明,从.url得到文本,但只能从直接.url在该答复按钮/链接被点击的特定评论的回复按钮之前。

如果您有任何建议或可以帮助我将不胜感激

<li class="comment byuser comment-author-jasondavis bypostauthor even depth-2" id="comment-6"> 
    <div class="c-grav"><img alt="" src="http://1.gravatar.com/" class="avatar avatar-60 photo" height="60" width="60"></div> 
    <div class="c-arrow"></div> 
    <div class="c-body"> 
     <div class="c-head"> 
      <a href="http://www.codedevelopr.com/" rel="external nofollow" class="url">jasondavis</a> 
      <span class="c-date">December 30, 2011 8:00pm</span> 
     </div> 
     <p>Comment body text is here......</p> 

     <span class="edit-comment"> 
      <a class="comment-edit-link" href="" title="Edit comment">Edit</a> 
      <a href="">Delete</a> 
      <a href="">Spam</a> 
      <a class="comment-reply-link" href="/codedevelopr/php-database-class/?replytocom=6#respond" onclick="return addComment.moveForm(&quot;comment-6&quot;, &quot;6&quot;, &quot;respond&quot;, &quot;5&quot;)">Reply</a> 
     </span> 
    </div><!--end c-body--> 
</li> 

假设您的评论ulcomments的ID:

$("#comments").on('click', '.comment-reply-link', function(e) { 
    var name = $(this).parents('.comment').first().find('.url').text(); 
    alert('replying to ' + name); 
    e.preventDefault(); 
}); 

上的jsfiddle Try it

+0

这是真棒它让我看到它是可行的,我将与它的一些玩,但它是在正确的轨道上,以便谢谢!我遇到的问题是我也有线索评论,所以如果评论有5个回复,我点击主评论上的回复按钮,它将显示所有5条评论中的长名字,如果只有1条评论我也在回复,然后显示的只是1个名字,所以只需要找出扭曲的结果 – JasonDavis 2012-01-07 08:02:05

+0

@jasondavis:你应该可以在添加'.first()'或'.last()'之后'.find('。url')'停止解决这个问题。 – icktoofay 2012-01-07 22:45:13

尝试this还的jsfiddle:

$(".comment-reply-link").click(function() { 
    username = $(this).parent().parent().children(".c-head").children(".url").html(); 
    alert(username); 
    return false; // to prevent further link processing by the browser. 
}); 

来获取用户名的值,你必须通过标签的节点走。

+0

这很像icktoofay的例子,但没有我在他的评论中发布的问题,这似乎解决了这个问题,并显示正确的名称,谢谢! – JasonDavis 2012-01-07 08:04:18

+0

我编辑了一些代码,加入:return false;以避免浏览器通过链接重定向页面。 – Aryo 2012-01-07 08:10:53

另一种替代方案,只是工作有点不同,以。家长:

var name = $(this).closest('.comment').find('.url').text(); 
+0

这也适用,但在我发布在@ icktoofay的答案上的情况中也有同样的问题。我意识到我没有发布显示嵌套评论回复的代码,所以这是我的错 – JasonDavis 2012-01-07 08:07:01