3

Img のスタイルを変更するために単純な removeClass と addClass を実行しようとしています。

    <div id="Pic_Viewer">
        <div id="Main_Pic_Viewer">
                <div class="Not_Selected" >
                    <img src='#' alt="PicURL_1" />
                </div>
                <div class="Not_Selected" >
                    <img src='#' alt="PicURL_2" />
                </div>
        </div>
        <div id="Small_Pic_Viewer">
            <ul>
                <li>
                    <img class="Small_Pic" src'#' alt="PicURL_1" />
                </li>
                <li>
                    <img class="Small_Pic" src='#' alt="PicURL_2" />
                </li>
            </ul>
        </div>
    </div>

div 内となしで #Main_Pic_Viewer img を使用してこれを実行しようとしました。

js:

$('#Small_Pic_Viewer ul li').click(
        function () {
            var ThisLI = this.firstElementChild.alt;
            var BigImgDiv = $('#Main_Pic_Viewer div');
            var CurDiv;

            for (var i = 0, l = BigImgDiv.length; i < l; i++) {
                CurDiv = BigImgDiv[i];
                if (BigImgDiv[i].children[0].alt === ThisLI) {
                    CurDiv.removeClass('Not_Selected').addClass('Selected');
                } else {
                    CurDiv.removeClass('Selected');
                };
            };
        }
    );

removeClass() は他のメソッドで正常に動作しているため、このエラーメッセージが表示される理由がわかりません。

4

2 に答える 2

6

jQuery オブジェクトで数値インデックスを使用すると、jQuery ラッパーなしで元の DOM 要素を取得できます。

これを jQuery 関数で再度ラップするだけで問題ありません。

// ...

CurDiv = $( BigImgDiv[i] );

// ...

コメントで@Andreasが提案した別の解決策は、eq()メソッドを使用することです。これはおそらくより良い方法です:

// ...

CurDiv = BigImgDiv.eq(i);

// ...
于 2013-04-30T06:26:26.443 に答える