2012-02-04 120 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')); 
    });