2012-02-04 125 views
0

好吧,我懷疑這裏會有幾十個這樣的頁面,所以我正在嘗試構建一個單獨的函數來正確處理它們,而不必回收一遍又一遍的代碼,並改變元素的ID或類名稱,以使其工作。

我的HTML看起來像:

<div class="button_select"> 
    <ul class="button_select_toggle"> 
     <li> 
      <div class="button_select_text">Menu Text</div><div class="button_select_arrow">V</div> 
     </li> 
    </ul> 
    <ul class="button_select_sub" rel="hidden"> 
     <li>Text</li> 
     <li>Text</li> 
     <li>Text</li> 
     <li>Text</li> 
    </ul> 
</div> 

什麼,我試圖做的是目前與類得到具體的UL button_select_sub這樣我就可以得到它的相對價值。在某種程度上,這是很容易的,如果這將成爲任何給定頁面上的唯一一個,但是這將在任何知道多少次的給定頁面上進行。因此,我試圖做出處理它們的通用功能。反正我最後一次失敗的嘗試是:

var selectstatus = $(this).siblings('.button_select_sub').attr('rel'); 
alert('status: '+selectstatus); 

但在我收到警示「狀態:未定義」也許我無法正常使用的兄弟姐妹?也許這是另一種選擇。另外值得一提的是button_select_sub可能並不總是最後一個UL,所以我不能這樣做:最後一個。

我也嘗試過,children(),find()..和一些其他人,我知道它可能我只是不能將它鏈接在一起。

+3

什麼是$(this)引用?你能發佈整個js代碼嗎? – elclanrs 2012-02-04 04:03:07

+0

對不起,$(this)引用div「button_select」 – chris 2012-02-04 04:15:19

回答

5

如果$(this)指的是div「button_select」,那麼我認爲你應該使用children而不是siblings

var selectstatus = $(this).children('.button_select_sub').attr('rel'); 
alert('status: '+selectstatus); 
+0

這就是它..猜猜我的錯誤是使用find()鏈接到children()因爲我沒有想到我可以在兒童中使用類選擇器),unchained find(),它很好地工作,謝謝。 – chris 2012-02-04 04:26:23

0

試試這個:

$(document).ready(function(){ 

    var selectstatus = ""; 

    $('.button_select').click(function(){ 

     selectstatus = $(this).children('ul.button_select_sub').attr('rel'); 
     alert('status: '+selectstatus); 
    }); 

}); 

如果你有比單.button_select_sub更多你可能想要運行的每個語句,儘管這可能會導致一些警告的彈出。

0

如果$(this)引用.button-select那麼siblings不是你應該使用的。 您應該使用childrenfind,但children().find()在這裏沒有意義。 另外,如果有很多.button_select_sub,您應該重複使用each並提取每個個體的rel值。

$('.button_select') 
    .find('.button_select_sub') 
    .each(function(){ 
     alert($(this).attr('rel')); 
    });