我用自定义HTML开发了一个简单的R-Shiny应用程序,我有一组输入(在一个表中),如下所示:

<tr><td>i1</td><td><input type="checkbox" id="i1" name="i1"></td></tr>
<tr><td>i2</td><td><input type="checkbox" id="i2" name="i2"></td></tr>
<tr><td>i3</td><td><input type="checkbox" id="i3" name="i3"></td></tr>
<tr><td>i4</td><td><input type="checkbox" id="i4" name="i4"></td></tr>

我需要在用户单击其中任何一个时监听更改,并更新矩阵上的一些值。我已经阅读了Shiny的文档,它说eventExpr是“表示事件的(引用或未引用的)表达式;这可以是一个简单的反应值,如input$click,调用一个反应表达式,如dataset(),甚至是花括号中的复杂表达式”,但我没有找到如何构建这样的表达式。
我必须为他们每个人创建一个observeEvent,比如:
observeEvent(input$i1, { ... })
observeEvent(input$i2, { ... })

...
有可能这样做吗?

最佳答案

您可以在父节点上添加ventListener(在本例中,我猜是您将这些行放入的表),并检查例如:

if(event.target.tagName === 'INPUT' && (/i[0-9]/).test(event.target.id)){
    // do your stuff
}

实际上,最好避免在类似节点上附加大量事件侦听器,而在父节点上只设置1个侦听器,因此+1表示直觉。

关于javascript - 使observeEvent监听一组相似的元素,而不是仅监听一组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37295314/

10-12 13:40