0

私は次のjsを持っています:

$('.overlayWrap').on('click', '.overlaySwitch', function(event) {
    var $this = $(this),
        $overlayRegisterWrap = $('.overlayRegisterWrap li'),
        type = $(this).data('go');

        event.preventDefault();
        $overlayRegisterWrap.hide();
        $overlayRegisterWrap.eq(type).show();
});

Firefox、Chrome、Safariで動作しますが、モバイルで試してみるとすぐにすべてのliが非表示になりますが、適切なliが表示されません。コンソールからログアウトする$overlayRegisterWrap.eq(type)と、正しいliが見つかりますが、表示されません。私は完全に迷っています。誰にもアイデアはありますか?

編集 基本的なhtml構造は次のとおりです。

<div id="Overlay" style="" class="overlayWrap" focus="">
    <ul class="overlayRegisterWrap">
        <li style="display: none;">
            //some crazy code
            <a class="overlaySwitch" data-go="1">Login</a>
        </li>
        <li style="display: none;">
            //some crazy code
            <a class="overlaySwitch" data-go="2">Register</a>
        </li>
        <li style="display: none;">
            //some crazy code
            <a class="overlaySwitch" data-go="3">Next</a>
        </li>
        <li style="display: none;">
            //some crazy code
            <a class="overlaySwitch" data-go="1">Forgot</a>
        </li>
        <li style="display: none;">
            //some crazy code
            <a class="overlaySwitch" data-go="2">Register</a>
        </li>
    </ul>
</div>
4

1 に答える 1

0

問題は、文字列を に渡すことですが、jQuery.fn.eq数字しか受け付けません。データ値を整数に「変換」する必要があります。あなたの場合、次のようにしてください:

$('.overlayWrap').on('click', '.overlaySwitch', function(event) {
    var $this = $(this),
        $overlayRegisterWrap = $('.overlayRegisterWrap li'),
        type = $(this).data('go') << 0; // We you the bitwise operatir to parse the data-string to an integer

        event.preventDefault();
        $overlayRegisterWrap.hide();
        $overlayRegisterWrap.eq(type).show();
});
于 2013-05-16T23:31:45.647 に答える