我想使用单选按钮来控制页面的布局。按钮看起来像这样:
<form>
<label>
<input type="radio" name="layout" class='layout-controls' data-type='layout' data-value='one'>
One
</label>
<label>
<input type="radio" name="layout" class='layout-controls' data-type='layout' data-value='two'>
Two
</label>
</form>
我绑定了这样的函数:
$('.layout-controls').on('click', function(event) {
var $btn;
$btn = $(event.target);
return doStuff($btn.data('type'), $btn.data('value'));
});
一切正常。
然后我试图在绑定事件处理程序之后将元素添加到页面的更高部分:
$("#message-area").html("<div><br><br><p>Please make a selection </p></div>")
这会导致单选按钮变得不可点击。一些观察:
message-area
中添加的HTML标记越多,下面的单选按钮就越多,无法点击getElementById
和innerHTML
的元素,但似乎没有区别你能否了解这里发生的事情?在事件处理程序绑定后,我是否应该能够在页面上进一步插入HTML?有什么安全可靠的方法呢?
修改
事实证明,文本的插入在单选按钮上分流了一个流氓的,不可见的SVG画布(参见JSFiddle)。我发现这是因为我在标记中发现了它,这需要很长时间,因为页面上有许多元素。找到它后我显然可以解决它,但我想知道,是否有一个工具可以使这个可见或帮助调试这个?
答案 0 :(得分:0)
您是否尝试将消息设置为这样的表单?
编辑:您可以使用
$("#message-area").html("<div><br><br><p>Please make a selection </p></div>");
OR:
$("#message-area").html("<div><br><br><p>Please make a selection </p></div>");
<form>
<label>
<input type="radio" name="layout" class='layout-controls' data-type='layout' data-value='one'>
One
</label>
<label>
<input type="radio" name="layout" class='layout-controls' data-type='layout' data-value='two'>
Two
</label>
</form>
<div id="message-area"></div>
答案 1 :(得分:0)
<form>
<input id="input1" type="radio1" name="layout" class="layout-controls" data-type="layout" data-value="one">
<label for="input1">One</label>
<input id="input2" type="radio2" name="layout" class="layout-controls" data-type="layout" data-value="two">
<label for="input2">Two</label>
</form>
在输入中添加ID,并为标签设置for-attributes。不要将输入控件放在label标签中。未经测试。
带有“for”属性的标签确实具有指向输入控件的逻辑链接。您不必将输入放在单击功能的标签内。我想你的JS问题是由这种结构造成的。