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

Chr*_*nes 5 javascript jquery html5

我创建了一个计算div内部图像的每个函数,我试图将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;

        }                   

    });
Run Code Online (Sandbox Code Playgroud)

the*_*tem 16

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

$this.data('count', numImages);
Run Code Online (Sandbox Code Playgroud)

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

不过,如果你想设置它,请使用

$this.attr('data-count', numImages)
Run Code Online (Sandbox Code Playgroud)

要么

this.setAttribute('data-count', numImages)
Run Code Online (Sandbox Code Playgroud)

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

this.count = numImages;
Run Code Online (Sandbox Code Playgroud)

对于原始数据,它是无害的.对于较大的对象或其他DOM元素,我会更犹豫.