Javascript 对象没有';t支持属性或方法';removeClass';

Javascript 对象没有';t支持属性或方法';removeClass';,javascript,jquery,Javascript,Jquery,我正在尝试做一个简单的removeClass和addClass来更改Img上的样式 <div id="Pic_Viewer"> <div id="Main_Pic_Viewer"> <div class="Not_Selected" > <img src='#' alt="PicURL_1" /> </div>

我正在尝试做一个简单的removeClass和addClass来更改Img上的样式

    <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内和div外使用#Main_picu Viewer img

js:

$('Small#Pic_Viewer ul li')。单击(
函数(){
var ThisLI=this.firstElementChild.alt;
var BigImgDiv=$('Main#Pic_Viewer div');
var-CurDiv;
for(var i=0,l=BigImgDiv.length;i

不确定我为什么会收到此错误消息,因为removeClass()在其他方法中工作正常。

在jQuery对象中使用数字索引时,您会得到原始DOM元素,而不使用jQuery包装器

只需将其再次包装到jQuery函数中即可:

// ...

CurDiv = $( BigImgDiv[i] );

// ...
@Andreas在评论中建议的另一个解决方案是使用该方法,这可能是更好的方法:

// ...

CurDiv = BigImgDiv.eq(i);

// ...
试试这个:


因为它不是jQuery对象,所以只需执行
CurDiv=$(BigImgDiv[i])谢谢大家,回答时完全避开了我。为什么要打开dom元素,立即将其重新包装到jQuery对象中?改用
// ...

CurDiv = BigImgDiv.eq(i);

// ...
$('#Small_Pic_Viewer ul li').click(function () {
    var ThisLI = this.firstElementChild.alt;
    $('#Main_Pic_Viewer div').each(function () {
        if (this.children[0].alt === ThisLI) {
            $(this).removeClass('Not_Selected').addClass('Selected');
        } else {
            $(this).removeClass('Selected');
        }
    });
});