javascript - inArray() 一直返回 false

标签 javascript jquery arrays

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

<!-- 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。当我 checkin 控制台时,上面的 JavaScript 语句总是返回 -1,为什么会这样?它不应该返回索引 1 因为该类存在于索引 1 处,还是我错了?

最佳答案

您使用的 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);

或与类(class)

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

关于javascript - inArray() 一直返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10719121/

相关文章:

javascript - 带有显示 XML 数据的 HTML 的空白页面

jquery - handOnTable 单元格着色

java - 如何以正确的方式动态处理开始和结束线程和信息?

php - 如何从由 ","分隔并后跟 - 的字符串形成两个数组?

javascript - Ng-Tag-Input 指令不清除值

javascript - 如何解决两个 jquery 冲突?

javascript - 无需重新加载页面即可更改 YouTube 视频 ID

javascript - 比较两个字符串在 JavaScript 中无法正常工作

javascript - 如何确定使用 $.post() 或 $.get() 时的错误

c - Malloc 结构数组,字段中的数据未正确保存