2010-06-28 62 views
0

我的JavaScriptjQuery的選擇只是第一個

  $(".controls").click(function(event) { 

        var div = $(event.target).parents(".controls"); 

        var a = $(div).find("tr .select"); 


      return false; 
     }); 

和HTML

<div id="grid1" class="controls"> 

    <a href="/projekt/create">Add</a> 
    <a href="/projekt/edit">Edit</a> 

</div> 


<div id="grid2" class="controls"> 

    <a href="/uloha/create">Add</a> 
    <a href="/uloha/edit">Edit</a> 

    <table> 
    <tr id="1"></tr> 
    <tr id="2" class="select"></tr> 
    <tr id="3"></tr> 

    </table> 

</div> 

我想選擇具有select類的第一個TR。 我試過

var a = $(div).find("tr:first .select"); 

var a = $(div).find("tr .select:first"); 

,但沒有一次成功。

+0

我敢肯定,這可以用一個設計重新思考解決..看起來你是過於複雜的事情。請仔細闡述這個腳本的整體目的? – Jeriko 2010-06-28 15:11:31

+0

您是否希望通過點擊#grid1或#grid2觸發事件,或者僅在#grid1被點擊時觸發事件? – 2010-06-28 16:47:49

+0

我想在一個頁面上有多個網格。網格div包含一個表格和一個控件div,其中有多個按鈕。每個按鈕都有其自己的用途(添加,編輯,刪除,搜索)。如果有人點擊一個按鈕,我需要從propriate表中選擇所選行。 – user137348 2010-06-29 07:09:15

回答

6

你可以試試這個:

var a = $("tr.select", div).first(); 

var a = $("tr.select:first", div); 

由於有:firstfirst()

要選擇內,所有這一切,你使用:

$(this, that) 

會是這樣的工作?

$(".controls").click(function(event) { 
    var a = $("tr.select:first", ".controls"); 
    // do stuff with a.... 
    return false; 
}); 

這改變了「兩」來不錯,但不是「四大」當你按下按鈕。

<div class="controls"> 
    <input type="button" value="Click the control" /> 
</div> 
<div id="grid2" class="controls"> 
    <table> 
     <tr id="1"><td>one</td></tr> 
     <tr id="2" class="select"><td>two</td></tr> 
     <tr id="3"><td>three</td></tr> 
     <tr id="4" class="select"><td>four</td></tr> 
    </table> 
</div> 
<script type="text/javascript"> 
    $(".controls input").click(function(event) { 
     var a = $("tr.select:first", ".controls"); 
     $(a).text("okay"); 
     return false; 
    }); 
</script> 

(作爲一個方面說明,這些都不是正確的ID名,他們不能啓動一個數字,如果你想valide html)

2

如何使用索引?

var a = $(div).find("tr.select")[0] 

/* I think that's the right syntax */ 
+1

問題是要求選擇類的tr元素。您的解決方案(tr .select)正在查找具有select類的第一個子元素。 – istruble 2010-06-28 16:34:01

+0

啊,你是對的。更正(刪除空間) – Armstrongest 2010-06-30 14:58:51

2

您可以使用first()函數來做到這一點。

var a = $(div).find("tr.select").first(); 
6

我敢肯定,你想要的是這樣的:在層次結構

var a = $(div).find("tr.select:first"); 

在jQuery選擇,空格分隔水平。

如果我使用了選擇器"tr:first .select"它會查找第一個tr並返回所有具有select類的子節點。

如果我使用的選擇"tr .select:first"它看起來在每個tr並與選擇類各tr返回第一個子元素。

+0

使用$(div).find(「tr.select:first」)的優點/區別是什麼? vs $(「tr.select:first」,div); ? – 2010-06-28 17:35:14

+0

@彼得阿杰泰:據我所知,他們做的是完全一樣的東西。不過,這將是一個有趣的事情。 – Powerlord 2010-06-28 17:41:21

+0

@R。 Bemrose - 謝謝,那也是我的想法,只是不確定。這將是有趣的,看看。 – 2010-06-28 17:45:09