Javascript 将取消绑定和bindAll仅限于和HTML元素

Javascript 将取消绑定和bindAll仅限于和HTML元素,javascript,jquery,html,r,shiny,Javascript,Jquery,Html,R,Shiny,在Shiny站点中,他们说在对DOM进行更改之前,也就是说,添加或删除输入和输出,您需要通过调用unbindAll和bindAll来告诉Shiny: 问题是,我的web应用程序有两个部分:侧栏上的选择和根据用户选择显示信息的主容器。问题是: 假设用户已经选择了项1,那么容器上会显示结构1 当用户选择项2时,调用modifyDom时会删除结构1,最后一行Shining.bindAll会导致侧栏的选择重新初始化,因此它会选择项1并再次显示结构1。 因此,我的问题是:在Shiny中是否有一种方法可以不

在Shiny站点中,他们说在对DOM进行更改之前,也就是说,添加或删除输入和输出,您需要通过调用unbindAll和bindAll来告诉Shiny:

问题是,我的web应用程序有两个部分:侧栏上的选择和根据用户选择显示信息的主容器。问题是:

假设用户已经选择了项1,那么容器上会显示结构1 当用户选择项2时,调用modifyDom时会删除结构1,最后一行Shining.bindAll会导致侧栏的选择重新初始化,因此它会选择项1并再次显示结构1。
因此,我的问题是:在Shiny中是否有一种方法可以不解除所有对象的绑定,而只解除某个HTML元素中存在的对象的绑定。

我以前从未使用过Shiny,但根据和搜索,unbindall和bindall函数也可以以下列方式使用:

不绑定

结合等位基因

其中元素似乎是document.getElementById函数或jQuery等效$'element'[0]返回的DOM元素

因此,您可以编写另一个类似这样的函数:

function modifyDomByElement (element) {
  Shiny.unbindAll(element);
  insertInputsAndOutputs();
  removeOtherInputsAndOutputs();
  Shiny.bindAll(element);
}
并保持modifyDom函数在发布时正常工作,别忘了

function modifyDomByElement (element) {
  Shiny.unbindAll(element);
  insertInputsAndOutputs();
  removeOtherInputsAndOutputs();
  Shiny.bindAll(element);
}