为什么javascript“ this”不能与“ each”一起使用?

恩比斯卡德

我尝试在检测到元素具有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

西尔万·勒鲁(Sylvain Leroux)

作为@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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么 foreach 不能与 String 一起使用?

为什么“ COALESCE”不能与“ GROUP BY”一起使用?

LibreOffice为什么不能与HUD一起使用?

rand为什么不能与AbstractFloat一起使用?

为什么 grep 不能与 iostat 一起使用?

为什么JQuery不能与CryptoJS一起使用?

为什么childElementCount不能与jQuery一起使用?

setuid为什么不能与mount一起使用?

为什么 CUDA 不能与 easyocr 一起使用?

为什么each()函数不能与连接到DOM的输入一起使用?

为什么Quickbooks可以与Ubuntu一起使用,而不能与Fedora一起使用?

为什么它可以与$ scope一起使用,但不能与`this`一起使用?

为什么我的 javascript 计算器不能与 base.html 一起使用?

为什么CSS转换(通过Javascript)不能与多个函数一起使用

为什么此脚本不能与nohup一起使用,但是不能,不能呢?

JavaScript承诺不能与resolve()一起使用

Javascript:为什么前缀运算符只能与模数一起使用,而不能与后缀运算符一起使用?

为什么@forward命名前缀不能与使用Sass的变量一起使用?

为什么使用函数声明不能与Web Worker一起使用?

Tomcat为什么可以与端口8080一起使用但不能与80一起使用?

GET请求可与Postman一起使用,但为什么不能与ReactJS fetch一起使用?

为什么多个列表索引可以与__getitem__一起使用,而不能与__setitem__一起使用?

Scala Puzzler:为什么head不能与toSet一起使用,而与Set一起使用呢?

OpenCV-为什么光流不能与出队<Mat>一起使用?

为什么通用表表达式不能与INSERT SELECT一起使用

为什么序列不能与验证列表一起使用

为什么:before和:after伪元素不能与`img`元素一起使用?

为什么我的HTML结构不能与CSS Grid布局一起使用?

为什么滑动滑块不能与标签一起使用?