简而言之,我正在尝试生成一个输入,并在事后创建一个标签。但是,不是创建预期的标签html,而是没有显示标签,jsfiddle中没有错误显示(尽管它也不起作用),并且在执行代码时不会出现错误。在chrome中的开发者控制台中甚至没有任何内容。这是我用来尝试这个的代码片段。
fieldset.append($('<input/>').attr({ type: 'radio', name: 'category', value: key, id: key}).click( function() { highLightButton("selected", key); hideShowText("show"); }).after("<label for='" + key + "'>AAA</label>"));
我绑错了吗?也许需要另外一个追加电话?从我看到它应该起作用的例子来看,它似乎只是忽略了代码。
根据要求提供jsFiddle网址
答案 0 :(得分:2)
试试这个:
var $input = $('<input/>');
$input.attr({
type: 'radio',
name: 'category',
value: 'abc',
id: '123'
}).click(function (e) {
console.log('click');
});
$('body').append($input);
$input.after("<label for='123'>AAA</label>");
JSFiddle演示:http://jsfiddle.net/sz29u00s/
答案 1 :(得分:1)
@Jim是对的,基本上对于“after”工作,你需要元素有一个父元素(最后是新元素的添加位置)。这就是为什么当你第一次附加到DOM然后调用after方法时它工作的原因。