Javascript 无法使用$作为目标元素(此)
这是我的代码:Javascript 无法使用$作为目标元素(此),javascript,jquery,Javascript,Jquery,这是我的代码: $(document).ready(function() { if ($(".box1").next().is(".box2")) { $(this).css("margin", "0"); } }); My.box1div的样式为margin:50px 总而言之,我想要的是:如果.box2div出现在.box1div之后,那么我的.box1div现在有0px的边距。我有10个.box1div,但并非所有.box1div后面都有一个.box2div。我
$(document).ready(function() {
if ($(".box1").next().is(".box2")) {
$(this).css("margin", "0");
}
});
My.box1
div的样式为margin:50px
总而言之,我想要的是:如果
.box2
div出现在.box1
div之后,那么我的.box1
div现在有0px的边距。我有10个.box1
div,但并非所有.box1
div后面都有一个.box2
div。我只希望在.box1
div之后出现.box2
div的边距为0px
。我不知道如何用当前代码使用$(this)关键字实现这一点。请提供帮助,谢谢您没有为此
分配任何内容,因为代码不在事件处理程序中(从技术上讲,ready
在jQuery中被视为事件,但在这种情况下没有真正的帮助)
您可以使用.each()
循环选择的所有元素,然后此
将是迭代中的当前元素
$(document).ready(function() {
$(".box1").each(function() {
if ($(this).next().is(".box2")) {
$(this).css("margin", "0");
}
});
});
由于代码不在事件处理程序中(从技术上讲,
ready
在jQuery中被视为一个事件,但在这种情况下它并没有真正的帮助),因此您没有为分配任何内容
您可以使用.each()
循环选择的所有元素,然后此
将是迭代中的当前元素
$(document).ready(function() {
$(".box1").each(function() {
if ($(this).next().is(".box2")) {
$(this).css("margin", "0");
}
});
});
下面是另一种可能的方法,如果.box1
和.box2
的数量相似,则其性能应该相似:
$(".box2").prev(".box1").css("margin", "0");
下面是另一种可能的方法,如果.box1
和.box2
的数量相似,则其性能应该相似:
$(".box2").prev(".box1").css("margin", "0");
您希望$(this)
在事件处理程序之外是什么?@Barmar抱歉,我忘了添加它。实际上,我不想使用事件/单击处理程序。我只想让函数自动加载。我知道你想要什么,请参阅我的答案。你希望$(this)
在事件处理程序之外是什么?@Barmar抱歉,我忘了添加它。实际上,我不想使用事件/单击处理程序。我只是想让函数自动加载。我知道你想要什么,看看我的答案。非常好。可惜没有CSS选择器,那么就根本不需要jQuery了。这与.box1+.box2
有什么不同?@ErikPhilips:它选择.box1
s.@Ry-一种非常简单的解决我的问题的方法-谢谢!很不错的。可惜没有CSS选择器,那么就根本不需要jQuery了。这与.box1+.box2
有什么不同?@ErikPhilips:它选择.box1
s.@Ry-一种非常简单的解决我的问题的方法-谢谢!这正是我想要的,谢谢!我只是不知道如何在document.ready中使用$(this)来定位元素。我只知道如何使用点击处理程序。感谢您的快速解决!这正是我想要的,谢谢!我只是不知道如何在document.ready中使用$(this)来定位元素。我只知道如何使用点击处理程序。感谢您的快速解决!