向每个函数中的元素添加数据

add data to element in each function

本文关键字:元素 添加 数据 函数      更新时间:2023-09-26

我制作了一个计算div内图像的each函数,并试图将div内计数的图像数设置为div的数据属性,但它不起作用。

我是不是因为它似乎不起作用而走错了路?

这是网站http://www.touchmarketing.co.nz/test/

    var mostImages = 0;
    numSliders = $wowSlides.length,
    lastVindex = numSliders-1;
    $wowSlides.each(function(){
        var $this = $(this),
        $images = $this.find('img'),
        numImages = $images.length;
        $images.css({width:$slideWidth, 'float':'left', 'position':'relative'}).wrapAll('<div class="slider" />');
        $slider = $this.find(".slider");
        $slider.width($slideWidth*numImages).css({'float':'left'});                     
        $this.data('count', numImages); // add data-count="insert number here" to this .wowSlides div
        console.log(numImages); 
        if(numImages > mostImages){
            mostImages = numImages;
        }                   
    });

这将数据设置到jQuery的专有数据缓存:

$this.data('count', numImages);

它没有设置为元素的data-属性。通常不需要在客户端上设置data-属性,因为它的目的是将数据从服务器传输到客户端。

尽管如此,如果你想设置它,请使用

$this.attr('data-count', numImages)

this.setAttribute('data-count', numImages)

就我个人而言,如果我想将少量数据与元素相关联,我只需要将其作为属性直接存储在元素本身上。

this.count = numImages;

对于原始数据来说,这是无害的。对于较大的对象或其他DOM元素,我会更加犹豫。