【发布时间】:2021-09-06 15:50:10
【问题描述】:
我有一堆单选按钮包裹在 div-s、label-s 等中。一个简化的版本是这样的:
<div>
<label for="rb__1">
<input type="radio" name="rb__1" onclick="onRadioButtonClick(event)" value="some_val__1" />
<span style="....">my rb__1</span>
</label>
</div>
<div>
<label for="rb__2">
<input type="radio" name="rb__2" onclick="onRadioButtonClick(event)" value="some_val__2" />
<span style="....">my rb__2</span>
</label>
</div>
<div>
<label for="rb__3">
<input type="radio" name="rb__3" onclick="onRadioButtonClick(event)" value="some_val__3" />
<span style="....">my rb__3</span>
</label>
</div>
处理程序:
<script>
function onRadioButtonClick(event) {
/* handler; it may read 'value' of the current radio-button and other things */
}
</script>
我还想将onclick 处理程序添加到每个div,以便单击它会导致相同的行为:将选择适当的单选按钮并以与单击单选按钮相同的方式进行处理按钮本身。所有这一切都尽可能少的复制粘贴。
我不能简单地在div 上添加onclick,因为处理程序会从event 读取某些内容,并且这些内容特定于单选按钮。
我也不想要不必要的if (clickOnDiv) then... else if (clickOnRadio) then...。
如何以正确的方式做到这一点?
【问题讨论】:
-
处理程序从
event读取哪些内容? -
and other things,具体像什么? -
如果有“处理程序读取的内容”从单选按钮单击单击 div 不会触发,那么您不能指望单击 div 是相同的。
-
我也想为每个 div 添加 onclick 处理程序,以便单击它会导致相同的行为 ~ 如果您使用事件具有多个子元素的 div 上的侦听器,你怎么能期望没有条件来检查正在单击哪个子元素并触发事件?
标签: javascript html ecmascript-6