0

另一个挑战 - 这更多是为了让代码看起来更干净,而不是“我该怎么做”。这是想法。

<section id="projector" data-start-at="7">....</section>

在 JS 中

$('#projector').projector_slider({'startFrom' : parseInt( REF TO DATA-START-AT )});

我在 HTML 元素上调用自定义函数。简单的。该函数有一个名为“startFrom”的选项,由 INT 指示。INT 存储在附加到 HTML 元素的属性中。我想要的是不必$('#projector')再次在 DOM 中查找。

有没有一种方法可以在函数调用中获得对投影仪的引用——比如$(this).attr('data-start-at)

Obv 我可以通过再次查找元素并直接访问它来解决这个问题,我提出这个问题是希望在清理我的 JS 时学习一个新的“this”参考技巧。

4

1 回答 1

0

不,你不能。您应该保存$('#projector')在 var 中并使用它:

var projector = $('#projector');

projector.projector_slider({
    startFrom: parseInt(projector.data('start-at')),
});

请注意,我使用 [ .data()][data] 而不是.attr('data-*'). 该data()函数由 jQuery 创建,是一种与data-*属性交互的智能方式。例如,如果您拥有data-first=true并使用.data('first'),您将获得一个布尔值“真”,如果您拥有data-children="['foo', 'bar']",您将获得一个对象,如果您使用.data('children').

于 2012-12-04T18:29:11.800 回答