У меня есть форма, где я изменяю набор полей при изменении полей выбора.JQuery об изменении .closest context?
Мой HTML выглядит следующим образом:
<div class="ajx" id="ajx_1">
<fieldset>
<legend>Inhalt</legend>
<select id="u_article" ...>
...
</fieldset>
</div>
Со следующим JQuery работает для всех современных браузеров:
$(".ajx").on("change", function() {
var $this = $(this);
console.log($this)
// ... additional code for understanding what I want to do:
var $form = $('form');
var method = $form.attr("method").toUpperCase();
var $this = $(this).closest('.ajx');
var $ser = $(".ajx select").serialize();
var $ser2 = $(".ajx input").serialize();
$.ajax({
url: $form.attr("action"),
data: $ser,
type: method,
success: function(res) {
var $fnd = '#' + $this.attr('id') + ' fieldset';
$this.html($(res).find($fnd));
},
error: function (xhr, status) {
alert('Unknown error - status: ' + status);
}
});
});
В консоли Firefox я могу видеть, что есть объект и контекст Object[div#ajx_1.ajx]
.
Теперь выше не работает для старых Firefox, как FF7 или FF3.6, потому что мне нужно установить change
прямо в соответствующие поля.
Я пробовал с этим JQuery код:
$(".ajx select").on("change", function() {
var $this = $(this).closest('.ajx');
console.log($this)
// ...
});
Теперь объект является правильным, но когда я открыть объект в консоли я получаю что-то другое в контексте: select#u_article
.
Кажется, он выбирает мой select
вместо div
как элемент здесь.
Почему это и как я могу это изменить?
ли 'u_article' также имеют' .ajx 'класс? – CodingIntrigue
нет, потому что весь «набор полей» заменен, а не только 'select'. – Toby
Я действительно не вижу, как здесь проблема 'context'. Он содержит 'select # u_article', потому что это селектор, который вы передали в обработчике изменений, что является правильным. В любом случае вы не должны полагаться на свойство 'context', оно было устарело в 1.10 и может быть удалено без уведомления - http://api.jquery.com/context/ – billyonecan