jQuery 获取数据属性的字符串 属性

jQuery get a string property of a data attribute

从下面的 data-ls 属性中获取值 14500 的最有效方法是什么。我以前从未见过单个数据属性的多个属性,我正在寻找更快的方法来提取值,而不是让它依赖于数据属性属性的顺序。

<div class="slide" data-ls="slidedelay:14500; transition2d: all;"></div>

.

var duration = $('.slide').data('ls').split(';');
duration = duration[0].split(':');
console.log("duration: " + duration[1]);

谢谢

Try this one:

<div class="slide" data-ls="slidedelay:14500; transition2d: all;"></div>

JS:

 var x = document.getElementsByTagName("div")[0].getAttribute("data-ls");
var x = x.split(":"); var val = x[1].split(';');
alert(val[0]);

JSFIDDLE https://jsfiddle.net/Grald/cgy5drL4/1/

如何在你的拆分变量上做一个循环,然后检查 key 是否是 slidedelay 以确保。

例如

var duration = $('.slide').data('ls').split(';');
var slidedelay = "";
if(duration) {
    $.each( duration, function( key, value ) {
        val = value.split(':');
        if(val) {
          if(val[0] == "slidedelay") {
            slidedelay = val[1];
            return false;  // then break loop 
          }
        }
    });
}


console.log("duration: " + slidedelay);

Fiddle

var duration = $('slide').data('ls').match( /slidedelay *: *(.*?);/ )[1];

Debuggex Demo

它returns第一个匹配的字符串,所以如果你需要它作为一个数字,你需要使用parseInt()。

简单快捷的方法: JSnippet Demo

function getFrom(selector) {
    var val = null;
    var x = $(selector)[0]
             .getAttribute("data-ls")
             .split(' ')[0]
             .split(':');
    if (x.length > 1) val = parseInt(x[1]);
    return val;
}

$(function() {

    console.log(getFrom('.slide'));

});