У меня есть layoutView, который хранит целенаправленный элемент так:После визуализации, элемент с JQuery обертке не reconized
this.model.searchBookingTriggerElement = document.activeElement;
layoutView является reRendered, и я стараюсь, чтобы вызвать следующее:
onRender: function() {
var self = this;
_.defer(function() {
if (self.model.searchBookingTriggerElement) {
$(self.model.searchBookingTriggerElement).hide();
}
});
}
Этот не работает, что я не могу понять, так как элемент кажется правильным.
Когда я console.log(self.model.searchBookingTriggerElement);
я получаю:
<button type="submit" class="btn button item-component btn-medium btn-green">Buscar</button>
Если я выбираю его непосредственно с помощью простого
$("button").hide();
Он работает, как ожидалось (скрывает элемент), то почему не Jquery признавая выбранный элемент кнопки?
Один ключ я нашел, что, когда я парить
<button type="submit" class="btn button item-component btn-medium btn-green" style="display: none;">Buscar</button>
в develeper инструментов это не красит его на экране, то есть он не связан с ним.
Это потому, что оно было повторно отображено, и теперь это еще один объект, чтобы сказать? Как я могу избежать этого?
Он даже работает, если я:
$("." + $(self.model.searchBookingTriggerElement).attr("class").split(" ").join(".")).hide();
вы видите поведение предполагает, что 'searchBookingTriggerElement' не тот же элемент, как' $ («кнопка») [ 0] '. Если вы повторите рендеринг, я ожидаю, что все старые элементы DOM будут убиты, а затем заменены новыми. Как исправить? Вероятно, вы должны сохранить выбранное состояние как свойство вида или, может быть, атрибут модели, сохранение элемента DOM в качестве свойства на модели - это довольно странно. –
@muistooshort эй, спасибо! Я не уверен, что вы предлагаете, так или иначе, я вижу, что у меня есть атрибут и класс, и выберите его, но я не совсем уверен, что это сработает, так как я не знаю, какой элемент будет в не сосредоточитесь ни на том, что у него будет класс или идентификатор и т. д. Поэтому я хочу выбрать сам элемент dom, спасибо за предложение не использовать свойство модели, я перестану его использовать, но я не уверен, как это поможет с тех пор Мне все равно нужно его выбрать, и даже если у меня есть объект (хотя он и не существует), поэтому получение его из атрибута не сильно изменится afaik – Trufa
Рефинансирование должно эффективно выполнять 'some_el.html (new_html) ', и это приведет к уничтожению всего в' some_el' перед созданием новых узлов, в результате вы получите ссылку на элемент DOM, который больше не находится на странице, поэтому выполнение вещей 'searchBookingTriggerElement' не влияет на стр. Почему у вас нет «выбранного» атрибута на ваших моделях или подобных? Таким образом, вы не пытаетесь сохранить состояние в DOM, DOM будет просто отображать состояние, которое хранится в другом месте. –