2012-05-21 9 views
0

我正在使用動畫導航工作。 (Joomla在後臺工作)jQuery - 檢索一個特定的類,同時有多個

我怎樣才能檢索class="item-##"只有,而有多個類(如下所示)。

我的jQuery

$(document).ready(function(){ 
    var timer; 
    var hover; 

    $('#nav li').hover(
     function() { 
/*Here!>>*/ var id = $(this).attr('class').split('-')[1]; 
      $('.moduletable-subNav ul').slideUp(); 
      $('#submenu-'+id).slideDown(); 
     }, 
     function(){ 
      var id = $(this).attr('id').split('-')[1]; 
      timer = setTimeout(function() { $('#submenu-'+id).slideUp(); },1000); 
     } 
    ); 

    $('.moduletable-subNav ul').hover(
     function(){ 
      clearTimeout(timer); 
     }, 
     function(){ 
      var id = $(this).attr('id'); 
      timer = setTimeout(function() { $('#'+id).slideUp(); },1000); 
     } 
    ); 
}); 

我的HTML:

<div class="moduletable"> 
    <ul class="menu" id="nav"> 
      <li class="item-109 current active parent"><a href="/tenc2012/burgerlijkrecht" >Burgerlijkrecht</a></li> 
      <li class="item-110 parent"><a href="/tenc2012/strafrecht" >Strafrecht</a></li> 
      <li class="item-108"><a href="/tenc2012/bestuursrecht" >Bestuursrecht</a></li> 
    </ul> 
    </div> 
    <div class="moduletable-subNav"> 
      <ul class="menu" id="submenu-109"> 
        <li class="item-114"><a href="/tenc2012/burgerlijkrecht/burgelijk-recht-deel-1" >Burgelijk recht deel 1</a></li> 
      </ul> 
      <ul class="menu" id="submenu-110"> 
        <li class="item-117"><a href="/tenc2012/strafrecht/strafvordering" >Strafvordering</a></li> 
      </ul> 
    </div> 
+0

我不明白這個問題 - 你能更好地解釋一下你的意思嗎?你的意思是檢索一個具有該類的項目嗎?你有什麼意思'有多個班'? –

+0

您應該使用'item-blahblah''標識符「作爲每個LI的* ID *,或者只是將元素中的數字部分作爲'data'屬性存儲,以實現更簡單的實現。 – karim79

+0

「class-xxx」在哪裏被添加?最好將標識符放在'id'或'data'屬性中,以便稍後檢索。類應該將元素分組,而不是單獨識別它們。 –

回答

2

一種技術,我有時會使用這個被欺騙了一點,並使用「相對」或其他未使用的屬性是傳遞這樣的事情。嘗試設置:

<li ... rel="109"> 

,然後讓:

$(this).attr('rel') 

一個黑客一點,但相當簡單的事情。

<li ... data-number="109"> 

和jQuery:使用karim79的 「數據號」 的建議

編輯

例子

$(this).attr('data-number') 
+2

或者數據屬性,而不是'data-number =「109」'(這就是他們在那裏)。 – karim79

+0

啊,是的,那會更符合標準。 – Johno

+0

'rel'經常在HTML中被濫用,實際上,它在大多數元素上都是無效的。 –

0

不知道如果我跟着你,但你想要的:

$('#nav li[class="item-109"]') 

如果你要的號碼,我想你可以做一個

$(this).attr('class').replace(/[^\d]/g, ""); 

還是太有點更安全

$(this).attr('class').replace(/^.*(item\-\d+)$/, "$1"); 
1

這是我想出了:

var classes = $('li[class^="item-]"').prop('class').split('\s'); 
var theClass; 
$.each(classes, function(){ 
    if (this.match(/^item-/)) 
     theClass = this;    
}); 
+0

+1是的請,也爲OP爲什麼這麼多jquery只是做一件簡單的事情bruv innit。 –

+0

@Tats_innit。你可以展示更好的方式... – gdoron

+0

洛爾布魯夫你已經得到了令人敬畏的方式+所有其他3種方式上下。使用'prop'使它變得很好。 –

0

試試這個:

var classes = $('#my_element').attr('class').split(" "); 

var item_class = $(classes).filter(function(a,i) { 
    return i.match(/item\-[0-9]+/); 
}); 

console.log(item_class); 
0
$(function(){ 
    $('li').each(function(){ 
     console.info($(this).attr('class').split(' ')[0]); 
    }); 
}); 
相關問題