0

我有类似下面的 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,但没有任何适用于 $(buttons +'> input') 的工作。

有谁知道为什么?

4

1 回答 1

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元素。使用它,您可以缩短它:

undo =
document.createElement('input');
$(undo).attr({  type: "button",
    value: "Start again" 
}).css({width:'93%'});

对此:

$('<input>').attr({  type: "button",
    value: "Start again" 
}).css({width:'93%'});
于 2009-04-17T15:01:52.383 回答