2017-02-23 143 views
0

Это дубликат этого вопроса:Как получить форму родителя ввода с jquery 1.8?

... но время шло дальше. Я думаю, что принятый ответ больше недействителен.

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

$(document).on("change", "#my_checkbox_input", function() { 
    $(this).??? 
}); 

Что должно ??? выглядеть с JQuery версии> = 1.8?

+0

вы можете показать свой HTML так, чтобы мы узнали, что именно вы хотите сделать –

+0

@Anant Я хочу, чтобы вопрос был как можно более простым. Я не думаю, что HTML нужен здесь.Если ваш комментарий получает больше двух оборотов, тогда я ошибаюсь, и я предоставил html. – guettli

+3

, если вам нужно захватить элемент '

', который действует как контейнер для ваших флажков, тогда я считаю, что '$ (this) .closest ('form')' должен работать. Почему вы чувствуете, что он не будет работать с версией jquery> = 1.8? – vijayP

ответ

1

Вы можете использовать this ключевое слово, ссылаться в контексте событий на объект текущего измененного элемента, а затем просто использовать this.form, чтобы получить родительскую форму, где обернутый текущий элемент, затем вызвать метод submit(), если вы хотите, чтобы представить это как, как:

$(document).on("change", "#my_checkbox_input", function() { 
    this.form.submit(); 
}); 

или же путем преобразования формы JQuery объекта первого:

$(document).on("change", "#my_checkbox_input", function() { 
    $(this.form).submit(); 
}); 

И вы всегда можете использовать методы JQuery .parents() или .closest() получить родительский элемент, в данном случае использовать объект JQuery $(this), которые относятся к текущему элементу укажите имя родительского узла (form), как:

$(document).on("change", "#my_checkbox_input", function() { 
    $(this).parents('form').submit(); 
}); 

Примечание:.closest() является более эффективным чем .parents() с точки зрения скорости.

Надеюсь, это поможет.

+0

Изображение вы преподаете новичку JS. Что бы вы предложили ему использовать (например, «если не уверены ...»)? И почему ты предлагаешь это? – guettli

+0

Я добавил краткое объяснение ... посмотрите пожалуйста. –

+1

@ ZakariaArcharki благодарим вас за добавление объяснения. Я буду использовать '$ (this.form) .submit();' в будущем. – guettli

0

Try:

$(this).parent() 

Или:

$(this).parent().find('#parent_id') 
3

Вы можете использовать closest() найти элемент родительского form, а затем вызвать submit() на нем:

$(document).on("change", "#my_checkbox_input", function() { 
    $(this).closest('form').submit(); 
}); 

Также отметим, что closest() был доступен с jQuery 1.3, поэтому ver В этом случае очень мало различий.

0

Следующий код будет работать в этой ситуации, но обратите внимание, что другие ответили с тем же синтаксисом, что и выше.

$(document).on("change", "#my_checkbox_input", function() { 
    var form = $(this).closest('form'); 
    // do whatever you want with the form as `form` 
}); 

.closest() метод перебирает элементов и их предков в дереве DOM и возвращает ближайший соответствующий переданный запрос. В этом случае мы искали форму, поэтому она вернет форму, которую вы ищете.