2012-02-15 29 views
1

即时尝试做的是给ul的背景图像的父李。给家长一个背景图片?

所以我有一个菜单内的子菜单。

这是我试图jQuery的..

$('li.on').closest('ul').parent('li').css({ backgroundImage: 'url(/content/images/point.png)', backgroundRepeat: 'no-repeat' }); ; 

我想我在父位的问题呢?

这是菜单...

<div class="sideMenu2"> 
    <ul> 
     <li><a href>retail</a> 
      <ul class="subsideMenu2"> 
       <li ><a href="/portfolio/5/0">cabot circus</a></li> 
       <li><a href="/portfolio/6/0">st. stephen&#39;s</a></li> 
       <li><a href="/portfolio/7/0">silverburn</a></li> 
       <li><a href="/portfolio/8/0">the elements</a></li> 
      </ul> 
     </li> 
     <li><a href>sports &amp; leisure</a> 
      <ul class="subsideMenu2"> 
       <li class= "on"><a href="/portfolio/19/0">test</a></li> 
      </ul> 
     </li> 
    </ul> 

所以,如果我在测试点击,运动和休闲应该得到的背景,但目前散户。

+1

因为你已经证明我们的标记,它在做什么是正确的。与“上”类的李是零售,而不是运动和休闲。 – Archer 2012-02-15 17:19:30

+0

对不起,我改变了它 – Beginner 2012-02-15 17:21:05

回答

0

零售业得到它的原因是因为在你写的jquery表达式的开头你有$('li.on')。这是在零售下选择一个li,以便当它影响零售。

您将需要获得第一个jQuery表达式才能获得正确的目标。这可能与将它更改为$(this)(如果它位于单击处理程序中一样简单),但您所做的取决于上下文。

+0

对不起,当你点击文本以便测试时,li会改变,但零售仍然在背景中 – Beginner 2012-02-15 17:20:35

+0

您是否尝试过使用'$(this)'?这可能是因为在改变类和上面的代码之间存在竞争条件,以至于它正在拾取错误的地方,但在您检查它时重置了它。如果你有你点击的锚点(我假设你这样做了),那么如果你总是在里面,就不需要再去搜索李。 – Chris 2012-02-15 17:24:10

1

看起来你忘了绑定click处理程序。如果用户点击锚点(<a>),防止默认操作也很重要。

$('li.on a').on('click', function(event) { 
    event.preventDefault(); 
    $(this).closest('ul').parent('li').css({ 
    'backgroundImage': 'url(/content/images/point.png)', 
    'backgroundRepeat': 'no-repeat' 
    }); 
}); 

演示:http://jsfiddle.net/qHUT4/