2014-04-06 2 views
0

나는 같은 버튼이 있습니다. 활동 피드의 각 항목에 표시됩니다. 나는 최근에 덧글을 좋아하는 능력을 추가했다. 이 작업을 수행하기 위해 아약스 조정에 도움이 필요합니다. 나는 현재 가장 가까운 .feeditem을 잡고 아이템의 ID를 가지도록 포맷 된 ID를 얻는다.아약스 조건부 게시 전

의견이 동일한 .feeditem div에 표시되므로 동일한 코드를 실행하면 올바른 정보가 저장되지는 ​​않지만 같은 코드가 실행됩니다. 부모 div id 중 하나가 activity-comment-으로 시작하는지 먼저 확인하고 다른 div를 선택하도록하고 부모 ID에없는 경우 기본값 (아래)을 선택하는 방법이 있습니까?

또는이 방법을 더 잘 구현하면 좋습니다. AJAX 최신 버전이므로 가장 효과적인 방법은 아닙니다.

$likeButton.click(function (event) { 
    event.preventDefault(); 
var $itemClicked = $(this) 

**//START SELECT** 
var liking_user_id = $itemClicked.closest('.feeditem').attr('data-member').match(/\d+/); 

var activity_id = $itemClicked.closest('.feeditem').attr('id').match(/\d+/); 
**//END SELECT** 

var data = { 
    'action': 'save_like', 
    'activity_id': activity_id, 
    'liking_user_id': liking_user_id 
} 
$.ajax({ 
    type: 'post', 
    url: ms_user_actions.ajaxurl, 
    data: data, 
    success: function (response) { 
      if (!response.success) { 
      } 
      if (response.data.like == true) { 
      $itemClicked.siblings('.feedBox_Likes').text('You Like This!'); 
      $itemClicked.html('Unlike').attr("like", "unlike"); 
      } 
      if (response.data.unlike == true) { 
      $itemClicked.html('Like').attr("unlike", "like"); 
      } 
     } 
    }); 
}); 
+0

JQuery API에서 [.parents()] (https://api.jquery.com/parents/)를 확인하십시오. –

+0

'var matchingParent = $ itemClick.closest ('[id^= "활동 - 코멘트"]'); if (matchingParent.length> 0) {/ * 조상이 일치 함 * /}' – nnnnnn

답변

1

질문에 HTML이 없으므로 여기에 몇 가지 가정을해야합니다. 특히, 나는 두 경우 모두에서 liking_user_idactivity_id을 원한다고 가정하고,이 두 값은 같은 방법으로 관련 컨테이너 노드 (divs)에서 읽습니다.

이러한 가정이 유효한 경우 가장 쉬운 접근법은 다른 클래스 이름 (예 : 'likeContainer')을 고안하여 외부 (피드 아이템) 컨테이너 및 내부 주석 컨테이너 각각에 적용하는 것입니다. 이 클래스의 이름은, 기존의 클래스 이름에 추가 될 것입니다 예를 들어 <div class="feeditem likeContainer">

다음과 같이 jQuery를 다음과 같다 : 따라서

var liking_user_id = $itemClicked.closest('.likeContainer').attr('data-member').match(/\d+/); 
var activity_id = $itemClicked.closest('.likeContainer').attr('id').match(/\d+/); 

,

  • 주석의이 '처럼'을 클릭

    , .closest()은 주석이 아닌 'like'를 클릭하면 내부의 주석 컨테이너
  • 을 찾을 수 있습니다. .closest()은 외부 feeditem 컨테이너를 찾습니다.

가정이 유효하지 않은 경우 외부 및 내부 div를 다르게 작성하는 것이 좋습니다. 이것은 최소한 저항의 노선 일 것입니다.