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)来定位元素。我只知道如何使用点击处理程序。感谢您的快速解决!