2016-11-17 76 views
2

我试图改变动态创建的div .cardh3的颜色,但是当我重新加载页面时,它将其值设置为默认值。通过jQuery更改动态创建的元素的CSS

这就是我想要改变颜色的地方,其中参数color是适用于h3的所需颜色。

在按一下按钮,我创建了卡:

function createCard(id, title, ...) { 
    // Creates a main card div 
    var $cardDiv = $('<div>', { 
     class: 'col-md-12 card', 
     "card-id": id 
    }); 

    // h3 tag with title of note 
    var $title = $('<h3>', { 
     "data-toggle": 'modal', 
     "data-target": '#update', 
     click: function() { 
      updateModal(id, title, note); 
     } 
    }).text(title); 

    // Append to card 
    $cardDiv.append($title); 
} 

在此之后,我打电话cardScheme方法:

cardScheme('#29ABDA'); 

function cardScheme(color) { 
    $('.card h3').css('color', color); 
} 

我意识到的JavaScript/jQuery的是无法找到因为这些卡是动态创建的,所以.card类。

var cards = document.getElementsByClassName('card'); 
for (var i in cards) { 
    console.log('cards', cards[i]); 
} 
// returned {cards, 0} 

如何更改h3的颜色?

+0

你需要创建DIV的DOM后,要做到这一点'.card' –

+0

所以显示你在哪里动态创建的div,所以我们可以提供帮助 –

+0

定义“动态创建”。从服务器加载?在客户端创建? ...? – marsze

回答

1

您可以拨打下面的createCard方法里面cardScheme('#29ABDA');

注意:我看不到你在哪里追加动态DIV $cardDiv的文档,我的意思是另一个现有divbody

工作snippet

function cardScheme(color) { 
 
    $('.card h3').css('color', color); 
 
} 
 

 
function createCard(id, title, note) { 
 
     
 
    // Creates a main card div 
 
     var $cardDiv = $('<div>', { 
 
      class: 'col-md-12 card', 
 
      "card-id": id 
 
     }); 
 
    
 
     // h3 tag with title of note 
 
     var $title = $('<h3>', { 
 
      "data-toggle": 'modal', 
 
      "data-target": '#update', 
 
      click: function() { 
 
       updateModal(id, title, note); 
 
      } 
 
     }).text(title); 
 
    
 
     // Append to card 
 
     $cardDiv.append($title); 
 
    
 
     $('#container').append($cardDiv); 
 
    
 
     cardScheme('#29ABDA'); 
 
} 
 

 
setTimeout(function(){ 
 
    createCard('test', 'testTitle', 'test note'); 
 
}, 2000); // after 2 seconds
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="container"></div>

+0

有趣,因为我以前不必打电话给它,但我想这是有效的。谢谢您的帮助! – narulakeshav

0

一旦DOM正在加载并准备使用,您应该添加您的JS代码。这样的 -

$(document).ready(function(){ 
    $('.card h3').css('color', color); 
}); 
+0

如果他在客户端动态地创建div –

+0

一旦DOM准备就绪,他仍然应该能够访问动态创建的div(不会即时创建)。对? –

+0

OP根据问题即时创建。 –

0
function createCard(id, title, ...) { 
     ... 
    // append this below the initial code you've 
    //.ready make sures that function within is executed only when the specified HTML element is created in DOM 
    $($title).ready(function(){ 
     //Then call your function 
     cardScheme('#29ABDA'); 
    }); 
} 
+2

你能解释你的答案吗?你做了什么,为什么它工作? – empiric

+0

**旗帜/评论者:** [仅限代码解答,例如downvote,请勿删除!](// meta.stackoverflow.com/a/260413/2747593) –

+0

注释中的解释 –