Вложение меню выбора внутри div нарушает меню jQuery

#javascript #jquery

#javascript #jquery

Вопрос:

Я разрабатываю выпадающую систему с несколькими цепочками, используя jQuery.

Моя демонстрация здесь отлично работает: https://jsfiddle.net/m27pnyo3 /

Однако, когда я хочу вложить каждое меню выбора в <div> элемент, у меня возникают проблемы. Я считаю, что эти проблемы связаны с моим использованием $(this).parent()) .

Посмотрите эту пересмотренную демонстрацию с <div> элементами вокруг каждого <select> — вы можете увидеть, что она прерывается: (

Может кто-нибудь объяснить, что я меняю в своем jQuery ниже, чтобы решить эту проблему?

 $(function() {    

    $(".series").each(function() {
        $(this).chained($(".mark", $(this).parent()));
    });
    $(".model").each(function() {
        $(this).chained($(".series", $(this).parent()));
    });
    $(".engine").each(function() {
        $(this).chained([
            $(".series", $(this).parent()),
            $(".model", $(this).parent())
        ]);
    });

});
  

Комментарии:

1. Его нарушение, потому что этот родительский элемент теперь является div, который окружает элемент управления select

2. Спасибо за это. Вы знаете, как я это решаю? 🙂

Ответ №1:

Если вы измените свой javascript, это сработает:

 $(function() {    

    $(".series").each(function() {
        $(this).chained($(".mark", $(this).parent().parent()));
    });
    $(".model").each(function() {
        $(this).chained($(".series", $(this).parent().parent()));
    });
    $(".engine").each(function() {
        $(this).chained([
            $(".series", $(this).parent().parent()),
            $(".model", $(this).parent().parent())
        ]);
    });

});
  

Ответ №2:

Просто добавьте еще один .parent()

 this.parent().parent()
  

Теперь вы добавили div в качестве родительского элемента, и это должно привести его к исходному назначению.

Комментарии:

1. Это удручающе просто. Необходимо помнить об этом в будущем. Большое спасибо @Agney 😀

2. this.parent() похоже, что методы jQuery привязаны .parent() к узлу DOM, это может привести к ошибке (при условии, что я не понимаю, что this это такое, в контексте).

3. Рад помочь @michaelmcgurk