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 に答える