2012-05-23 193 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