我有以下代码 我正在尝试动态创建带有和不带标签的单选按钮。我创建单选按钮时无法将文本放在单选按钮中,这里是没有标签的代码 这就是期待
<input type="radio" name="Alex" value="Alex"/>Alex
$('<input>').attr({
type:'radio',
name:'name',
value: "Alex",
text:"Alex"
}).insertAfter("#divid"));
现在有了标签,
<label><input type="radio" name="Alex" value="Alex"/>Alex<label>
//create a label tag
var label = $('<label>', { text:"Alex"});
//append input tag to label
$(label).append($('<input>').attr({
type:'radio',
name:"Alex",
value:"Alex"
}).insertAfter("#divid"));
上述两个都不会在控制台上产生任何错误,但它不会产生我感兴趣的正确的HTML标记。还有一种方法可以直接向无线电添加标签,因为我动态创建它们。我的意思是我不想创建一个标签标签,并附加单选按钮。非常感谢您的帮助
答案 0 :(得分:2)
label
和radio
var $input = $('<input />', {
type : "radio",
name : "name",
value : "alex"
});
$("<label />", {
insertAfter: "#somediv", // (or use appendTo: to insert into it)
append: [$input, "Alex"] // include our $input and also some text description
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="somediv">DIV</div>
答案 1 :(得分:0)
您应该将var label = $('<label>').attr({ text:"Alex"});
替换为var label = $('<label>').text("Alex");
此外 - 您的代码中几乎没有语法错误,我看不出正确复制和粘贴的难度。
答案 2 :(得分:0)
我喜欢Roko's answer,但如果您正在构建用户内容中的单选按钮标签,则它很容易受到HTML注入。
在这里,我使用.text()
方法确保正确转义文本。
var $target = $('#target'),
records = [{ id: 1, name: "Alex" },
{ id: 2, name: "Test that HTML <em>is not</em> injected" }];
$target.append('<h3>With Labels</h3>');
for (var i=0; i < records.length; i++) {
$target.append($('<label>').text(records[i].name)
.prepend($('<input type="radio" name="mychoice">',
{ value: records[i].id })));
}
$target.append('<h3>Without Labels</h3>');
for (var i=0; i < records.length; i++) {
$target.append($('<span>').text(records[i].name)
.prepend($('<input type="radio" name="mychoice">',
{ value: records[i].id })));
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="target"></div>