2013-03-12 92 views
0

我有一個如下所示的html。如何從jquery對象獲取html元素

<tr class="meta-info" id="${page.id}"> 
    <td> 
     <div class="pull-left"> 
     <font size="1"> 
      <a href="javascript:void(0)" class="like">Like</a> 
     </font> 
     </div> 
     <div class="pull-right" style="font-size:1"> 
     <span class="badge"><i class="icon-thumbs-up"></i>1</span>   
     </div> 
    </td> 
</tr> 

我想增加喜歡的數量,當用戶在喜歡超鏈接cliks。

這是我的jQuery代碼。我想知道如何從jquery對象中獲取html元素。

$(".like").click(function(event){ 
    var parentTr = $(event.target).closest("tr"); 
    if(parentTr.length){ 
     var pageId = parentTr.attr("id"); 
     var spanEle = parentTr.get(0)+" div span:first-child"; ------(1) 
     var lastNumber = parseInt(spanEle.text()); 
     spanEle.text(lastNumber+1); 
    } 
}); 

我不知道我是否做對在其上標有1號線

+0

開始在這裏:) http://docs.jquery.com/Traversing/find – 2013-03-12 10:13:08

+0

你想「像」被點擊時要檢索的元素? – 2013-03-12 10:13:37

回答

0

我認爲你需要添加額外的<span>標籤,這樣就可以更換次數,而不觸及鄰近的圖標

<span class="badge"><i class="icon-thumbs-up"></i> 
    <span class="like-count">1</span> 
</span> 

,那麼你可以解決它

$(".like").click(function() { 
    var spanEle = $(this).closest('tr').find('.like-count').first(); 
    if (spanEle.length) { 
     var newCount = parseInt(spanEle.text()); 
     spanEle.text(newCount + 1); 
    } 
}); 

在事件處理程序, this參考是event.target。你也許能夠處理不存在的情況,但這種方式是安全的。

的jsfiddle演示:http://jsfiddle.net/rupw/VfCvK/

+0

使用parseInt時,您應該總是傳遞基數參數; – Archer 2013-03-12 10:54:52

+0

要避免八進制字符串?我想是的,儘管在這種情況下,我們自己生成的字符串,以便不會造成任何問題。 – Rup 2013-03-12 11:15:56

+1

並非如此 - 初始值不是由您的代碼設置的。 – Archer 2013-03-12 11:19:04

0

嘗試:Fiddle

var lastNumber = parseInt(parentTr.find('.pull-right span').text(), 10); 

你的代碼看起來像:

$(".like").click(function(event) { 
    var parentTr = $(event.target).closest("tr"); 
    if (parentTr.length) { 
     var pageId = parentTr.attr("id"); 
     var spanEle = parentTr.find('.pull-right span'); 
     var lastNumber = parseInt(spanEle.text(), 10); 
     spanEle.text(lastNumber + 1); 
    } 
}); 

更新:如果您想保留<i>標籤然後使用:

spanEle.html(spanEle.html().replace(lastNumber, lastNumber + 1)); 

與其使用:spanEle.text(lastNumber + 1);

Sample

+0

設置文字時,這不會破壞''標籤嗎? – Rup 2013-03-12 10:27:27

+0

@Rup,thax指出毛刺...更新我的回答... – Anujith 2013-03-12 10:36:42

0

嘗試......

$(".like").click(function(event) { 
    var parentTr = $(event.target).closest("tr"); 
    if (parentTr.length) { 
     var pageId = parentTr.attr("id"); 
     var spanEle = parentTr.first('.badge'); 
     var lastNumber = parseInt(spanEle.text(), 10); 
     spanEle.text(lastNumber + 1); 
    } 
}); 

如果span元素總是有一個類名,然後將找到的第一個(只有?)一個並返回一個int值的文本。