检查html数据属性中的多个值

时间:2015-07-17 09:22:28

标签: jquery html custom-data-attribute

我有一个具有多个值的数据属性(data-day =“5,6,7”),我想将今天的日期与这些值进行比较。请在下面找到我创建的代码,但只有在数据属性中只有一个值时才能正常工作。我如何检查和比较今天的日期与属性中的多个值?

<script>
    jQuery(document).ready(function(JQuery){
        var date = new Date();
        var getday = date.getDay();

        var show = 'today';

        jQuery(".cd-gallery ul li").each(function() {
            var running_days = JQuery(this).data('day');

            if (getday == running_days) {
                JQuery(this).addClass('today');
            }
            else {
            }
        });

    });

    </script>
    <section class="cd-gallery">
        <ul>

                <li class="mix weekends" data-day="5,6,7" >

5 个答案:

答案 0 :(得分:5)

您可以使用split()将逗号分隔的字符串转换为数组,然后使用indexOf查找数组中的匹配值。试试这个:

jQuery(document).ready(function($){
    var getday = new Date().getDay();
    var show = 'today';

    $(".cd-gallery ul li").each(function() {
        var running_days = $(this).data('day').split(',');
        if (running_days.indexOf(getday.toString()) != -1)
            $(this).addClass('today');
    });
});

Example fiddle

请注意,getDay()会返回星期几。今天是星期五,意味着它将返回5。如果您想获得当月的日期(今天为17),请使用getDate()

答案 1 :(得分:1)

您可以split值并匹配您所达到的条件

   jQuery(document).ready(function(JQuery){
        var date = new Date();
        var getday = date.getDay();
        var show = 'today';

        jQuery(".cd-gallery ul li").each(function() {
            var running_days = JQuery(this).data('day');
            var arr = running_days.split(',');
            $.each(arr, function( index, value ) {
               alert(value)
          });
            
        });

    });

    
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<section class="cd-gallery">
        <ul>

                <li class="mix weekends" data-day="5,6,7" >

答案 2 :(得分:-1)

var str = '5,6,7'; // = JQuery(this).data('day');
var daysArray = str.split(',');
for(...) {
    ...
}

indexOf正如@Roy McCrossan所说。检查价值会更好,但是。在比较之前可能需要修剪这一天。

答案 3 :(得分:-1)

您可以使用:

<script>
    jQuery(document).ready(function(JQuery){
        var date = new Date();
        var getday = date.getDay();

        var show = 'today';

        jQuery(".cd-gallery ul li").each(function() {
            var list_item = JQuery(this);
            var running_days = JQuery(this).data('day');
            var running_days_data = new Array();
            if(running_days){
                 running_days.split(',').each(function(i,val){
                     running_days_data.push(val);
                 });
            }

            if ($.inArray(getday, running_days_data) > -1;) {
                $(list_item).addClass('today');
            }
            else {
            }
        });    
    });
</script>

答案 4 :(得分:-1)

只需使用此选择器即可匹配数据日属性中的日期。

jQuery(".cd-gallery li[data-day*=" + getday + "]").addClass("today");

试试这个,让我知道它是否适合你:)