【问题标题】:Evaluate a data-attibute on a div with jQuery and pass the value into a function使用 jQuery 评估 div 上的数据属性并将值传递给函数
【发布时间】:2012-09-06 16:19:48
【问题描述】:

我有多个带有预览图像的幻灯片块(对于 jQuery Cycle,每个幻灯片实例都有不同的毫秒延迟),如下所示:

<div class="content">
    <div class="slideshow preview" data-delay="-2000">
        <img src="media/prevslide_3.jpg" alt="Img 1" />
        <img src="media/prevslide_4.jpg" alt="Img 2" />
        <img src="media/prevslide_5.jpg" alt="Img 3" />
    </div>
</div>

我想使用 jQuery 将这些不同的延迟值(通过数据属性设置)传递给将运行所有 Cycle 事件的函数。

$(document).ready(function() {

$('.slideshow.preview').cycle({
    fx: 'scrollHorz',
    random: 1,
    speed: 300,
    timeout: 6000,
    // here, for a single slideshow, delay is set like this "delay: -1234"
});
});

如何评估 div 上的数据属性 - data-delay="-2000" - 并将其传递给 Cycle 函数?

非常感谢!

【问题讨论】:

  • 试试这个.....,延迟:$(this).attr('data-delay'); ...我没有尝试,但可能这种方法可以帮助你。
  • @Rune FS:我尝试使用延迟:{ $('.slideshow.preview').attr('data-delay'); } 在那里,但这显然会产生语法错误;所以我认为必须以某种方式将 data-delay 属性评估为一个变量,并“以某种方式”将其与插件所需的“延迟:”选项相关联?
  • @Kerberos:是的,也许我必须创建一个变量 var delay = $(this).attr('data-delay');在那里,然后将其应用于“延迟:”设置?

标签: jquery custom-data-attribute


【解决方案1】:

jQuery 有 .data() 方法,它适用于 html5 数据属性。

$(document).ready(function() {
    $('.slideshow.preview').cycle({
        fx: 'scrollHorz',
        random: 1,
        speed: 300,
        timeout: 6000,
        delay: $(".slideshow.preview").data("delay")
    });
});

编辑

我错过了延迟键,但这有效。 FIDDLE

【讨论】:

  • 非常感谢,这可以正确评估 data-delay 属性。但现在所有幻灯片同时开始 - 好像只有第一个幻灯片的 div 的数据属性被评估并用于所有其他幻灯片......
  • 如果有多个幻灯片放映并且它们需要不同的延迟,您可能需要单独调用它们,$(".slideshow.preview").data("delay") 只采用第一个匹配元素并使用它的data-delay
  • 啊,谢谢,刚刚看到你的小提琴。更改它以显示我的意思是不同幻灯片之间没有不同的延迟。这里是jsfiddle.net/6mU9S/3
  • 好的,谢谢,我明白你的意思了。作为 jQuery 初学者,我的印象是有一个更好的方法,而不是像 jquery.malsup.com/cycle/int.html with $.fn.cycle.defaults.timeout = 6000; 的插件创建者那样做。 $(function() { $('td pre code').each(function() { eval($(this).text()); }); });评估使用
     标签放入 HTML 中的多个幻灯片的设置。不知何故,我认为用 jQuery 做同样的事情是实现相同功能的更好方法。
  • 要根据每个幻灯片的div 设置延迟,您必须设置 ID 以唯一标识这些元素。 jsfiddle.net/6mU9S/4
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多