2014-04-06 32 views
0

我有一個像按鈕。它顯示活動Feed的每個項目。我最近增加了評論的功能。需要一些幫助調整ajax來處理這個問題。我目前抓取最接近的.feeditem並獲取該ID,該ID被格式化爲具有該項目的ID。ajax條件var發佈前

評論顯示在相同的.feeditem股利,所以點擊像執行相同的代碼,但不保存正確的信息。有沒有辦法讓它首先檢查一個父divs 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^=「activity-comment」]');如果(matchingParent.length> 0){/ *具有匹配的祖先* /}' – nnnnnn

回答

1

不得不在這裏做一些假設,因爲問題中沒有HTML。特別是,我假設在這兩種情況下都需要liking_user_idactivity_id,並且這兩個值是以相同方式從相關容器節點(div)中讀取的。

如果這些假設是有效的,那麼最簡單的方法可能是設計另一個類名(例如'likeContainer')並將其應用到外部(feeditem)容器和每個內部註釋容器。這個類的名稱將會追加到任何現有的類名,如<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。這可能是阻力最小的一條線。