我有一个layoutView,它存储了聚焦元素:
this.model.searchBookingTriggerElement = document.activeElement;
对layoutView进行了重新编译,我尝试触发以下内容:
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();
答案 0 :(得分:0)
我认为评论很清楚,一旦你重新渲染,你所选择的元素就消失了。我假设你是创建布局的人,所以也许你可以为每个可以选择的元素分配一个唯一的id,所以每次你渲染你需要的只是id。
this.searchBookingTriggerElement = document.activeElement.id;
我省略了延迟,但你可以将其添加到 -
onRender: function() {
var self = this;
if (self.searchBookingTriggerElement) {
$('#' + self.searchBookingTriggerElement).hide();
}
}