inArray()始终返回false

时间:2012-05-23 11:35:57

标签: javascript jquery arrays

我不确定如何修复它,但在使用-1时我总是得到inArray()。更明确一点,这就是我正在做的事情:

<!-- 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.navigationdata.about-anchor。当我签入控制台时,上面的JavaScript语句总是返回-1,为什么会发生这种情况?它不应该返回索引1,因为该类存在于索引1,或者我错了吗?

1 个答案:

答案 0 :(得分: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);