我尝试在检测到元素具有data-voted
属性时将其分配给一个类"true"
,但简单的addClass行不起作用。
在$(this)
阅读each()
完的jQuery文档之前,我一直在使用,然后切换到以下内容:
windowReady = ->
jQuery ->
$voteLinks = $('.vote-button a')
$voteLinks.each (i, current) ->
if $(current).data('voted') == "true"
$(current).addClass('voted')
$(window).load(windowReady);
$(window).on('page:load', windowReady);
$(this)
windowReady = ->
jQuery ->
$voteLinks = $('.vote-button a')
$voteLinks.each ->
if $(this).data('voted') == "true"
$(this).addClass('voted')
$(window).load(windowReady);
$(window).on('page:load', windowReady);
即便如此,即使我已经确认它确实具有以下data-voted
属性,它仍未分配类:"true"
可以在js2coffee上将CoffeesSript转换为Javascript 。
作为@gwho答案的补充,这种隐式类型转换实际上是JQuery的记录功能:
HTML5 data- *属性
尝试将字符串转换为JavaScript值(包括布尔值,数字,对象,数组和null)。仅在不更改值表示形式的情况下,将值转换为数字。例如,“ 1E02”和“ 100.000”等价于数字(数值100),但对其进行转换将改变其表示形式,因此它们保留为字符串。字符串值“ 100”将转换为数字100。
[...]
要以字符串形式检索值的属性而不尝试对其进行任何转换,请使用attr()方法。
如以上引用中所述,如果您“不喜欢”隐式转换,则可能更喜欢使用attr()
(使用完整的属性名称)而不是data()
:
windowReady = ->
jQuery ->
$voteLinks = $('.vote-button a')
$voteLinks.each (i, current) ->
if $(current).attr('data-voted') == "true"
$(current).addClass('voted')
如果您可以接受这种隐式转换:
windowReady = ->
jQuery ->
$voteLinks = $('.vote-button a')
$voteLinks.each (i, current) ->
if $(current).data('voted') == true
$(current).addClass('voted')
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句