Javascript 对象没有';t支持属性或方法';removeClass';
我正在尝试做一个简单的removeClass和addClass来更改Img上的样式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>
<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');
}
});
});