试图选择一个类中的单个元素。不使用“jQuery(this).next”

时间:2016-10-03 09:12:06

标签: javascript jquery

我尝试使用postcode-overlay-not只选择一个类名为jQuery(this).next()的元素,这在过去的类似情况下对我有用。这次似乎没有用。我尝试使用.prev(),但这也没有用。

任何帮助表示赞赏!

jQuery(".help-container .delivery-options__option .postcode-restrictions-not").click(function() {
    jQuery(this).next(".help-container .delivery-options__option .postcode-overlay-not").fadeIn("slow");
});

jQuery(".help-container .delivery-options__option .postcode-overlay-not .closing-x").click(function() {
    /*jQuery(".help-container .delivery-options__option .postcode-overlay").css("display", "none");*/
    jQuery(this).next(".help-container .delivery-options__option .postcode-overlay-not").fadeOut("slow");
}); 

1 个答案:

答案 0 :(得分:3)

.next()只获取下一个DOM节点,然后将其与您指定的类进行比较。

在您的情况下,您已经指定了多个不会与单个节点匹配的分层类。

由于您没有提供HTML结构,以下是一些替换.next()的想法:

jQuery(".help-container .delivery-options__option .postcode-restrictions-not").click(function() {

    // remove (this) and just get from the top again
    // will likely match multiple
    jQuery(".help-container .delivery-options__option .postcode-overlay-not").fadeIn("slow");

    // Use (this).next, assuming the next is *exactly* as specified
    // unlikely, but depends
    jQuery(this).next(".postcode-overlay-not").fadeIn("slow");

    // Use nextAll().first()
    // will work if they are siblings
    jQuery(this).nextAll(".postcode-overlay-not").first().fadeIn("slow");

    // Use up to shared parent, then down
    // most likely to work, but depends on where others are
    jQuery(this).closest(".delivery-options__option").find(".postcode-overlay-not").fadeIn("slow");

});