我有类似下面的jQuery代码
buttons =
document.createElement('div');
$(buttons).addClass("overlay_buttons").css({
styles });
save =
document.createElement('input');
$(save).attr({ type: "button",
value: "Save"
}).css({width:'45%'});
undo =
document.createElement('input');
$(undo).attr({ type: "button",
value: "Start again"
}).css({width:'93%'});
//add elements to document
$(buttons).append(undo);
$(buttons).append(save);
$(buttons +'> input').css({
shared styles for buttons
});
我遇到的问题是按钮的共享样式不适用。我没有收到任何错误消息。我也尝试使用其他jQuery方法检查它不是问题的CSS,但是没有应用于$(按钮+'>输入')的工作。
有谁知道为什么?
答案 0 :(得分:4)
你的问题在这里:
$(buttons +'> input').css({
shared styles for buttons
});
此时 buttons
不是字符串,而是DOM元素对象。因此,当您尝试将此对象附加到字符串> input
时,您的选择器最终会变成“[object HTMLDivElement]> input”,这显然不对。
此 应该工作,因为根据children()
文档,它只选择直接子项,复制>
选择器的行为:
$(buttons).children('input').css({
shared styles for buttons
});
或者,如果没有,那应该是什么,那么你可以试试这个,虽然我感觉不太好:
$('> input', buttons).css({
shared styles for buttons
});
另外,我不确定您为什么单独使用createElement
创建元素。 jQuery支持创建DOM元素on the fly。使用它,你可以缩短它:
undo =
document.createElement('input');
$(undo).attr({ type: "button",
value: "Start again"
}).css({width:'93%'});
对此:
$('<input>').attr({ type: "button",
value: "Start again"
}).css({width:'93%'});