1

修正方法はわかりませんが-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、それとも間違っていますか?

4

1 に答える 1

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);
于 2012-05-23T11:45:01.133 に答える