【问题标题】:jQuery -get data attributes & assign them as CSS in a key value pairjQuery - 获取数据属性并将它们分配为键值对中的 CSS
【发布时间】:2017-11-29 20:18:22
【问题描述】:

我有以下 HTML

    <h4 data-padding-top="100" data-padding-left="0" data-text-align="left" data-color="#ffffff">Promotion Two</h4>

我想获取数据属性并将它们作为 CSS 样式分配回 H4。我有以下 JS 代码,但 css 函数调用给出了错误(我不想简单地添加 style="";在 HTML 中客户端不舒服):

    var H4obj = {},
        $thisH4;

    function css(el, styles) {
        console.log(styles);
        for (var property in styles)
            el.style[property] = styles[property];
    }

    $('h4').each(function(index, el) {
        $thisH4 = $(this);

        var el = $thisH4;

        data = $thisH4.data();

        $.each(data, function(key, val){
            H4obj['data-' + key] = val;
        });

        $.each(H4obj, function(index, value){                
            css($thisH4, {index:value});
        });
    }); 

我是不是太过分了,有没有更简单的方法?

非常感谢任何帮助

【问题讨论】:

    标签: jquery css keyvaluepair


    【解决方案1】:

    我认为你犯了几个错误......在我看来你的变量比必要的多,而且由于你已经在使用 jquery,你应该使用 jquery 的内置方法.css

    $('h4').each(function(index, el) {
        var $el = $(el); // the jquery h4 object
    
        var data = $el.data();
        $el.css(data);
    }); 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    <h4 data-text-align="left" data-color='red'>Test One</h4>
    
    <h4 data-text-align="right" data-color="blue">Test Two</h4>

    基本上,.css 需要一个键值对,其中“data-”从键中删除。这正是.data() 给你的。还要确保声明所有变量(它们可能已在您发布的 sn-p 上方声明,我不知道)。

    【讨论】:

    • 你是个传奇。如此干净和简单。我想我是时候放弃编码了!
    猜你喜欢
    • 1970-01-01
    • 2017-04-03
    • 2010-11-28
    • 2021-06-18
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    相关资源
    最近更新 更多