Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在呈现之后,带有jquery包装的元素不会被重新确认_Javascript_Jquery_Backbone.js_Marionette - Fatal编程技术网

Javascript 在呈现之后,带有jquery包装的元素不会被重新确认

Javascript 在呈现之后,带有jquery包装的元素不会被重新确认,javascript,jquery,backbone.js,marionette,Javascript,Jquery,Backbone.js,Marionette,我有一个layoutView,它存储聚焦元素,因此: this.model.searchBookingTriggerElement = document.activeElement; layoutView被重新渲染,我尝试触发以下操作: onRender: function() { var self = this; _.defer(function() { if (self.model.searchBookingTriggerElement) {

我有一个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.searchbookingtriggerement)时我得到:

<button type="submit" class="btn button item-component btn-medium btn-green">Buscar</button>
它按预期工作(隐藏元素),为什么jquery不能识别所选的按钮元素


我发现的一个线索是当我在空中盘旋时

<button type="submit" class="btn button item-component btn-medium btn-green" style="display: none;">Buscar</button>

我认为注释非常清楚,一旦重新渲染,您选择的元素就消失了。我假设您是创建布局的人,所以您可能可以为可以选择的每个元素指定一个唯一的id,因此每次渲染时所需的只是id

this.searchBookingTriggerElement = document.activeElement.id;
我遗漏了延迟,但你可以加进去-

onRender: function() {
  var self = this;
  if (self.searchBookingTriggerElement) {
    $('#' + self.searchBookingTriggerElement).hide();
  }
}

我认为注释非常清楚,一旦重新渲染,您选择的元素就消失了。我假设您是创建布局的人,所以您可能可以为可以选择的每个元素指定一个唯一的id,因此每次渲染时所需的只是id

this.searchBookingTriggerElement = document.activeElement.id;
我遗漏了延迟,但你可以加进去-

onRender: function() {
  var self = this;
  if (self.searchBookingTriggerElement) {
    $('#' + self.searchBookingTriggerElement).hide();
  }
}

您看到的行为表明,
searchbookingtriggerement
$('button')[0]
不是同一个元素。如果您正在重新渲染,那么我希望所有旧的DOM元素都被删除,然后替换为新的元素。如何修复?可能您应该将所选状态存储为视图属性或模型属性,将DOM元素存储为模型属性是非常奇怪的。@muistooshort嘿,谢谢!我不确定你的建议是什么,不管怎样,我看到了,我会得到属性和类,然后选择它,但我不确定这是否有效,因为我不知道哪个元素将处于焦点,也不知道它是否具有类或id等。所以我想选择dom元素本身,感谢不使用model属性的建议,我将停止使用它,但我不确定这会有什么帮助,因为我仍然必须选择它,即使bizzare,我也有这个对象(即使它不存在),所以从属性获取它不会有太大的改变。渲染应该有效地执行
some_el.html(new_html)
这将破坏
某些节点中的所有内容
在创建新节点之前,您最终会引用一个不再在页面上的DOM元素,这就是为什么对
SearchBookingTriggerement
执行操作不会影响页面的原因。为什么您的模型或类似模型上没有“selected”属性?这样,您就不会试图在DOM中存储状态,DOM只会显示存储在别处的状态。
this.model.searchbookingtriggerement=document.activeElement
您是如何/何时执行此代码的。。?ypu是否可以发布..?我认为您还应该删除“defer”函数,并将代码移动到“onAttach”回调中隐藏元素,而不是“onRender”。您看到的行为表明
searchBookingTriggerElement
$('button')[0]
不是同一个元素。如果您正在重新渲染,那么我希望所有旧的DOM元素都被删除,然后替换为新的元素。如何修复?可能您应该将所选状态存储为视图属性或模型属性,将DOM元素存储为模型属性是非常奇怪的。@muistooshort嘿,谢谢!我不确定你的建议是什么,不管怎样,我看到了,我会得到属性和类,然后选择它,但我不确定这是否有效,因为我不知道哪个元素将处于焦点,也不知道它是否具有类或id等。所以我想选择dom元素本身,感谢不使用model属性的建议,我将停止使用它,但我不确定这会有什么帮助,因为我仍然必须选择它,即使bizzare,我也有这个对象(即使它不存在),所以从属性获取它不会有太大的改变。渲染应该有效地执行
some_el.html(new_html)
这将破坏
某些节点中的所有内容
在创建新节点之前,您最终会引用一个不再在页面上的DOM元素,这就是为什么对
SearchBookingTriggerement
执行操作不会影响页面的原因。为什么您的模型或类似模型上没有“selected”属性?这样,您就不会试图在DOM中存储状态,DOM只会显示存储在别处的状态。
this.model.searchbookingtriggerement=document.activeElement
您是如何/何时执行此代码的。。?ypu是否可以发布..?我认为您还应该删除“defer”函数,并将代码移动到“onAttach”回调中隐藏元素,而不是“onRender”。此外,为什么需要重新渲染?您可以在不重新渲染的情况下隐藏它,因为它是一个布局,如果有需要替换的内容,您可以在不重新渲染的情况下替换它们。此外,为什么需要重新渲染?您可以在不重新渲染的情况下隐藏它,并且由于它是一个布局(如果有需要替换的内容),因此您可以在不重新渲染的情况下替换它们。