2011-01-21 116 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'); 
});