我正在尝试对除$(this)
项
$('.items').click(function(){
var myitem = $(this);
$(".items").each(function() {
if (myitem == $(this)){
break;
} else {
//perform action
}
});
});
我哪里出错了?有没有更好的方法?
答案 0 :(得分:2)
尝试使用.not()
函数过滤掉当前元素
$('.items').click(function(){
$('.items').not(this).each(function(){
//perform action here.
});
});
答案 1 :(得分:1)
出了什么问题?
使用jQuery
方法(又名$
)时,会创建一个新的jQuery 对象实例,其中包含一个元素匹配列表您的选择器与jQuery方法的丰富原型一起。
您的错误是尝试比较两个不同的实例。
您可以做的是通过进行以下更改来比较元素:
// change this:
var myitem = $(this);
// to this:
var myitem = this;
// change this:
if (myitem == $(this)){
// to this:
if (myitem == this){
除非您打算使用jQuery 对象功能,否则没有理由发起新实例。如果可能,只需使用元素。避免此类用例是最佳做法。表现明智。
最佳解决方案
但是你的案例中最好的解决方案是所有其他答案中提到的,使用jQuery的not方法从新创建的实例中排除元素。
答案 2 :(得分:0)
使用.not()
来避免
试试这个
$(".items").not($(this)).each(function() {
});
OR
根据您的代码
$(".items").not(myitem).each(function() {
});
答案 3 :(得分:0)
您可以使用not()
忽略点击的元素:
$(".items").not(this).each(function() {
});