2012-05-23 73 views
1

我不知道如何解决该问题,但使用​​时总是得到-1。更明确的,这里是我在做什么:inArray()始终返回false

<!-- HTML Markup --> 

<nav class="navigation clearfix"> 
    <a class="home-anchor" data-class="home-anchor" href="#"> 
     <span class="icons-wrapper"> 
      <i class="icon-normal-state"></i> 
      <i class="icon-active-state"></i> 
     </span> 
     <span class="anchor-text">Home</span> 
    </a> 
    <a class="about-anchor" data-class="about-anchor" href="#"> 
     <span class="icons-wrapper"> 
      <i class="icon-normal-state"></i> 
      <i class="icon-active-state"></i> 
     </span> 
     <span class="anchor-text">About</span> 
    </a> 
    <a class="work-anchor" data-class="work-anchor" href="#"> 
     <span class="icons-wrapper"> 
      <i class="icon-normal-state"></i> 
      <i class="icon-active-state"></i> 
     </span> 
     <span class="anchor-text">Work</span> 
    </a> 
    <a class="shop-anchor" data-class="shop-anchor" href="#"> 
     <span class="icons-wrapper"> 
      <i class="icon-normal-state"></i> 
      <i class="icon-active-state"></i> 
     </span> 
     <span class="anchor-text">Shop</span> 
    </a> 
    <a class="services-anchor" data-class="services-anchor" href="#"> 
     <span class="icons-wrapper"> 
      <i class="icon-normal-state"></i> 
      <i class="icon-active-state"></i> 
     </span> 
     <span class="anchor-text">Services</span> 
    </a> 
    <a class="contact-anchor" data-class="contact-anchor" href="#"> 
     <span class="icons-wrapper"> 
      <i class="icon-normal-state"></i> 
      <i class="icon-active-state"></i> 
     </span> 
     <span class="anchor-text">Contact</span> 
    </a> 
</nav> 

/* JavaScript Markup */ 

var anchors = $(this.cluster_navigation_class).children(); 
var anchor = (jQuery.inArray(data, anchors) == -1) ? anchors[0] : jQuery.inArray(data, anchors); 

哪里this.cluster_navigation_class.navigation,并data.about-anchor。上面的JavaScript语句总是返回-1,当我检查控制台时,为什么会发生这种情况?它不应该返回索引1,因为该类存在于索引1,或者我错了吗?

+0

索里,其中,是 “数据” 的定义是什么? –

+0

它不检查课程。它检查对象的值。 http://api.jquery.com/jQuery.inArray/ –

+0

如何检查课程? – Roland

回答

2

您正在使用inArray错误。您正在比较字符串和元素列表。 jQuery不能神奇地知道你想做什么。

您是否意识到自己在自己的帖子中有过自己的想法。你说的一个地方是检查数据,然后是你正在检查课程的下一个地方。数据和类只是重复的,所以我不确定使用它们中的哪一个有问题。您应该使用find来选择导航元素内部的元素。

var myLink = jQuery(".navigation").find('[data-class="about-anchor"]'); 

使用过滤器的另一种方法:

var links = jQuery(".navigation a"); 
var activeElem = links.filter(function(){ return jQuery(this).data()==="about-anchor"; }); 
var myLink = activeElem.length===1 ? activeElem : links.eq(0); 

或与类

var links = jQuery(".navigation a"); 
var activeElem = links.filter(".about-anchor"); 
var myLink = activeElem.length===1 ? activeElem : links.eq(0); 
+0

但我不是在找那个。我正在寻找一个类(保存在localStorage上)以匹配导航中的某个类。如果没有找到,我只是返回第一个导航项目(在我的情况下是家),这将是登陆网站时的索引页面。 – Roland

+0

因此查找数据,更改了选择器。 – epascarello

+0

所以@epascarello,让我换个角度来看,如何将该导航的子级的所有类存储在数组中?这样我可以使用'inArray()',因为我需要那个类,而不是元素。有可能这样做吗? – Roland