我正在尝试使用jquery为动态创建的div添加css属性,并在文档加载时指定jquery css部分。但是当我稍后使用任何事件动态添加div时,那些带有类名的div将无法获得指定的属性。我已经在小提琴中添加了示例代码.. http://jsfiddle.net/nEgzY/9/
在小提琴中,div会在按钮点击时附加,你可以看到它没有获得指定的属性..
var eventsArray=["test1", "test2"];
$(".testClick").on("click",function(){
var printHTML='';
for(var i=0; i<eventsArray.length; i++){
printHTML = "<div class='eventNameTagColor"+eventsArray[i] +"'> test </div>"
}
$(".appendingDiv").append(printHTML);
});
$(document).ready(
function() {
for(var i=0; i<eventsArray.length; i++){
$(".eventNameTagColor"+ eventsArray[i]).css({"background" : "linear-gradient(center top , #F68A28, #F36C00) repeat scroll 0 0 transparent" ,
"width": "250px",
"font-weight" : "bold",
"height" : "30px",
"color":"#ffffff",
"float":"left"
});
}
});
答案 0 :(得分:0)
问题在于您的代码,请查看此处:http://jsfiddle.net/nEgzY/10/
你可以看到我添加了:
<div class="eventNameTagColortest1"></div>
你可以看到,如果你把元素放在最初改变页面上的CSS上,那么CSS就可以了。问题是当你想要更改它的CSS时(在文档加载时)元素不存在 - 这需要在click事件上,通过事物的外观来完成。
答案 1 :(得分:0)
我认为你已经在这个问题上回答了你自己的问题:你指定的CSS样式只会被文档就绪解雇,因此只有那些在你的选择器中出现在DOM中的元素才会被触发及时将收到样式。
通过jQuery添加CSS时,它会将其作为内联样式直接添加到目标元素中。如果您之后向页面添加新元素,除非您通过JS(再次)将它们专门设置为您的printHTML变量,否则它们将不会拥有它们。(
答案 2 :(得分:0)
你应该连接你的字符串printHTML,它应该是
var eventsArray=["test1", "test2"];
$(".testClick").on("click",function(){
var printHTML='';
for(var i=0; i<eventsArray.length; i++){
printHTML += "<div class='eventNameTagColor"+eventsArray[i] +"'> test </div>"
}
$(".appendingDiv").append(printHTML);
});
更好的方法是
var eventsArray=["test1", "test2"];
$(".testClick").on("click",function(){
$.each(eventsArray,function(i,tag){
var dom = $("<div class='eventNameTagColor"+tag +"'> test </div>)";
$(".appendingDiv").append(dom);
})
});
答案 3 :(得分:0)
您的代码有3个问题:
1)你在这里错过了分号printHTML = "<div class='eventNameTagColor"+eventsArray[i] +"'> test </div>"
2)在$(".eventNameTagColor"+ eventsArray[i])
$(document).ready
上将{css}应用于$(".testClick").on("click",function(){ });
3)虽然我对CSS3 Gradients不太满意,但我注意到你的渐变css似乎不正确。 background : linear-gradient(center top , #F68A28, #F36C00) repeat scroll 0 0 transparent;