2012-02-27 53 views
3

这里是我的标记:查找特定的元素,并用它做什么

<ul class="tab1"> 
<li><a href="http://site.com/some.html?param=1"></li> 
<li><a href="http://site.com/some.html?param=2"></li> 
<li><a href="http://site.com/some.html?param=3"></li> 
... 
</ul> 

我想如果当前window.location的匹配任何名单锚进行比较,如果为真,那么我想要做一些像addClass('active')的东西。

我检查浏览器的当前位置和乘车从列表元素中的href参数代码:

// get current url parameter 
var getBrowserUrl = document.URL.split('?')[1]; 

// get parameters of all the <li> anchors 
jQuery('.tab1 a').each(function(){ 
    var getElementUrl = jQuery(this).attr('href').split('?')[1]; 
    if (getBrowserUrl == getElementUrl) { 
     jQuery(this).addClass('active'); 
    } 
}); 

(本)位显然是行不通的,因为jQuery的“这”将参考所有列表元素。

如何指定匹配列表元素?

+3

没有,'this'将把每个匹配的元素反过来。你有什么应该工作。一旦找到匹配项,您可能想要返回false(打破迭代)。 – tvanfosson 2012-02-27 03:01:59

+1

在.each()函数中,'this'依次是每个匹配元素;在你的代码中,有三个元素。 – 2012-02-27 03:06:47

回答

1

我测试你的代码,并提出了一些修改,请尝试以下操作:

<ul class="tab1"> 
    <li><a href="http://site.com/some.html?param=1"/></li> 
    <li><a href="http://site.com/some.html?param=2"/></li> 
    <li><a href="http://site.com/some.html?param=3" /></li> 
</ul> 
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"></script> 
    <script type="text/javascript"> 
     $(function() { 
      // get current url parameter 
      var getBrowserUrl = document.URL.split('?')[1]; 
      // get parameters of all the <li> anchors 
      $('.tab1 a').each(function() { 
       var getElementUrl = $(this).attr('href').split('?')[1]; 
       if (getBrowserUrl == getElementUrl) { 
        $(this).addClass('active'); 
       } 
      }); 
     }); 
    </script> 
0

如果你想你是通过迭代的项目更好的控制,将它添加到您的.each功能:

.each(function(index, value) { ... } 

这样,价值是你想找到的元素。

+1

谢谢shanabus。在发布这个问题几分钟后,我实际上已经计算出来了。 (function)(){var {0;}};}};}};}}(){'j'(this).attr('href').span('?')[1]; if(getBrowserUrl == getElementUrl){jQuery(this).css('backgroundColor','red'); } }); – Max 2012-02-27 03:06:53

相关问题