2011-01-21 115 views
1

這聽起來很容易做,但我似乎無法做到這一點。這個想法是,當點擊'a'標籤時,檢查它是否有一個名爲'collapsed'的類。如果是,請更改'ul'背景(即標籤是其中的一部分)。我不知道哪個'a'標籤被點擊了,所以我不知道這是'ul'的一部分,我認爲我可以鑽取來找到父'ul',但它是不工作。如何更改背景圖片?

HTML:

<ul class="some-class" id="some-id-1"> 
    <a href="#" id="id-1">something</a> 
    <li> 
     <a class="collapsed">something else</a> 
    </li> 
</ul> 

<ul class="some-class" id="some-id-2"> 
    <a href="#" id="id-2">something</a> 
    <li> 
     <a class="collapsed">something else</a> 
    </li> 
</ul> 

<ul class="some-class" id="some-id-3"> 
    <a href="#" id="id-3">something</a> 
    <li> 
     <a class="collapsed">something else</a> 
    </li> 
</ul> 

我的腳本:

$('a').click(function() { 
    var cName = this.className; 
    switch(cName) { 
     case 'collapsed' : 
     $(this).parent().find('> ul').css('background','url(img/red.png) 0 0'); 
     break; 
    }; 
}); 

我在做什麼錯?任何和所有的建議,歡迎...使用jQuery的closest功能這樣

+0

JQuery是你做錯了什麼。 – 2011-01-21 17:56:02

+0

@Anonymous,這種評論對任何人都沒有幫助。如果JQuery不是最好的解決方案,那麼如何提供備用選項? – 2011-01-21 18:01:45

回答

3

嘗試 -

$('a').click(function() { 
    var cName = $(this).attr('class'); 
    if(cName == 'collapsed') { 
     $(this).closest('ul').css('background','url(img/red.png) 0 0'); 
    }; 
}); 
0

第一件事,this應該像$(this)使用。

$('a').click(function() { 
    // Change the first .collapsed element next to the clicked a 
    $(this).next('.collapsed').css('background-color', 'url(img/red.png) 0 0'); 
});