2012-11-07 79 views
1

我正在尋找一些jQuery代碼的幫助。檢查href是否有類,如果是的話,抓住id

基本上我有一個像這樣的HTML結構。

<ul class="menu"> 
    <li><a href="#" id="parent-one">One</a></li> 
    <li><a href="#" id="parent-two">Two</a></li> 
    <li><a href="#" id="parent-three">Three</a></li> 
    <li><a href="#" id="parent-four">Four</a></li> 
</ul> 

我的PHP代碼添加類=「活動」,如果用戶是「上」,所以這取決於鏈接被點擊的時候,看起來就像這樣:

<li><a href="#" class="active" id="parent-four">Four</a></li> 

因此多數民衆贊成都相當簡單。

我想在頁面加載時做的事情是搜索每個菜單項,直到找到class =「active」的那個。然後取出該鏈接的ID,將其從parent-xxx更改爲child-xxx,然後'顯示'該孩子的ID。

這可能嗎?

回答

3
$(function() { 
    // Within .menu, find .active, grab its id, and replace parent with child 
    var new_id = $('.menu').find('.active').attr('id').replace('parent', 'child'); 

    // Select element with this new id, and show it. 
    $('#' + new_id).show(); 
});​ 

小提琴:http://jsfiddle.net/rwgJc/1/

+0

這一行中得到一個錯誤 - 未捕獲的SyntaxError:非預期的標記非法 – BigJobbies

+0

哦,對不起... ...它一定是插入非法字符,當我複製它..寫出來,並完美的作品...謝謝你! – BigJobbies

+0

添加某種例程來改變哪些是活動的是不是有意義? –

0

你通過所有li元素需要循環,並檢查當前李是否有一流的活躍

DEMO

$('ul li').each(function() { 
    if($(this).hasClass('active')) { 
      // do whatever you want 
    } 
}); 
+0

能否請你告訴我的意義我和el?有時我會看到'function(e){}',我認爲'e'或者意味着錯誤...或者... –

+0

我是用於索引的。如果你console.log(i)它會顯示'0,1,2,3',因爲有四個li。就e而言,我們並不需要這裏,實際上我們並不需要它們中的任何一個,因此我將它移除了。 – 2619

1
​$('ul li a').each(function(){ 
    if($(this).hasClass('active')){ 
     alert($(this).prop('id')); //your action here 
    } 
});​​​ 

//or as techfoobar suggested 
alert($('ul.menu li a.active').prop('id')); 
+1

這可以在alert($('ul.menu li a.active')。prop('id'));' – techfoobar

1

像這樣的東西應該工作:

// get the link with class 'active' 
var activeLink = $('.menu li a.active'); 

// determine the new id, i.e. child-xyz 
var newID = 'child-' + activeLink.attr('id').split('-')[1]; 

// assign that to the active link 
activeLink.attr('id', newID); 

// do other stuff with newID 
2

的東西,因爲這

var id = $('ul.menu li a.active').attr('id').replace('parent', 'child'); 
$('#' + id).show(); 
+0

該錯誤與這一個 - 在作業中無效的左側 – BigJobbies

+0

@BigJobbies愚蠢我,有一個'='符號連接*#*和id而不是'+'(沒有測試代碼發佈前,但現在固定) –

0

簡單不優化的一個,但是這將工作

$("ul.menu li").each(function(){ 
a=$(this).find('a'); 
if(a.hasClass('active')){ 
id=a.attr('id'); 
a.attr('id',"child-"+id.split("-")[1]); 
} 
}); 

工作演示:http://jsfiddle.net/sCUfp/