使用jQuery的问题>选择

时间:2009-04-17 14:57:12

标签: jquery css-selectors

我有类似下面的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,但是没有应用于$(按钮+'>输入')的工作。

有谁知道为什么?

1 个答案:

答案 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%'});