2012-01-07 4 views
1

저는 Wordpress의 "답장"버튼을 사용하여 댓글을 달고 답장하는 댓글의 사용자 이름을 가져 와서 댓글 텍스트 상자에 게시하려고합니다. @USERNAME링크를 클릭하면 다른 클래스의 내용을 가져옵니다.

다음은 내 Wordpress 코멘트의 출력입니다. 사용자가 클릭하면 6 행에이 클래스 이름 url이있는 링크와 링크 텍스트입니다 jasondavis

더 아래로 라인 15 회신 링크가에 아래로, 그것은 comment-reply-link

의 클래스가 그 회신 링크,이 경우에는 Username을 얻으려고하는데 jasondavis 그래서 나중에 텍스트 영역 상자에 삽입 할 수 있습니다.

jQuery를 사용하여 페이지에 이러한 주석이 여러 개 있다고 가정하고 회신 링크를 클릭하면 .url에서 텍스트를 가져올 수있을만큼 똑똑해야하지만 .url에서 직접 회신 단추/링크를 클릭 한 특정 주석에 대한 회신 단추 앞에옵니다. 당신이 어떤 조언을하거나 도움을 줄 수있는 경우

나는 당신의 코멘트 ul 가정

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

답변

3

comments의 ID를 가지고 감사하겠습니다 : JSFiddle에

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

Try it합니다.

+0

이 그것이 행할 저를 보여줍니다 멋진, 그래서 감사 나는 어떤 플레이해야 할 것이다 그러나 그것은 바른 길에이다 ! 내가 겪고있는 문제는 또한 주석이 스레드되어 있기 때문에 주석에 5 개의 응답이 있고 주 주석의 회신 버튼을 누르면 긴 문자열의 모든 5 개의 주석의 이름이 표시됩니다. comment 나는 또한 대답하고있다, 그때 그것은 단지 1 개의 이름을 보여준다. 그래서 꼬임 덕분에 알아낼 수있다. – JasonDavis

+0

@jasondavis : 당신은'.first()'또는'.last()'를 뒤에 추가 할 수 있어야한다. '.find ('. url')'를 사용하여 해당 문제를 방지하십시오. – icktoofay

1

는 JSFiddle에도 this을 시도해보십시오

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

+0

다음을 추가하여 코드를 조금 편집했습니다. return false; 링크를 통해 페이지를 리디렉션하는 브라우저를 피하십시오. – Aryo

1

단지 .parents에 약간 다르게 작동하는 또 다른 방법 :

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

이것은 잘 작동하지만 @ icktoofay의 답변에 게시 한 것과 동일한 문제가 있습니다. 중첩 된 댓글 답글을 보여주는 코드를 게시하지 않았다는 것을 알았습니다. 그래서 내 잘못이었습니다. – JasonDavis

관련 문제