jquery:从data-attribute设置子元素颜色

nik*_*sos 3 jquery

知道如何使这项工作?

$("div[data-color]").each(function() {
    $(this).children('p').css('color', function () {
        return $(this).data('color')
    });
});
Run Code Online (Sandbox Code Playgroud)

结构看起来像

<div data-color="#ff0000"><p>text that needs right color</p></div>
Run Code Online (Sandbox Code Playgroud)

Pra*_*lan 5

内部不需要那个回调函数this指的p不是div.

$("div[data-color]").each(function() {
    $(this).children('p').css('color', $(this).data('color'))
});
Run Code Online (Sandbox Code Playgroud)

$("div[data-color]").each(function() {
  $(this).children('p').css('color', $(this).data('color'))
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-color="#ff0000">
  <p>text that needs right color</p>
</div>
Run Code Online (Sandbox Code Playgroud)


或者像回调那样做

$("div[data-color] > p").css('color',function(){
    return $(this).parent().data('color');
    // or return this.parentNode.dataset.color
});
Run Code Online (Sandbox Code Playgroud)

$("div[data-color] > p").css('color', function() {
  return $(this).parent().data('color');
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-color="#ff0000">
  <p>text that needs right color</p>
</div>
Run Code Online (Sandbox Code Playgroud)


使用纯JavaScript使用querySelectorAllArray#forEach方法

Array.from(document.querySelectorAll("div[data-color] > p")).forEach(function(ele) {
  ele.style.color = ele.parentNode.dataset.color;
});
Run Code Online (Sandbox Code Playgroud)

Array.from(document.querySelectorAll("div[data-color] > p")).forEach(function(ele) {
  ele.style.color = ele.parentNode.dataset.color;
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-color="#ff0000">
  <p>text that needs right color</p>
</div>
Run Code Online (Sandbox Code Playgroud)