javascript - 使用 JQuery 方法查找类。在 Rails 应用程序中使用 JavaScript 文件

标签 javascript jquery ruby-on-rails local-storage

文本“pearl”和“diamond”是存储在 localStorage 中的数组中的元素。我找不到任何好的资源来帮助我从 localStorage 中提取数据,以便我可以在 Rails 中显示和操作数据。因此,我在 application.js 文件中编写了一个函数来帮助我查找文本和周围的类。

这是 html 中的信息。

<div class="ruby-gem">
  <a target="_blank" href="https://www.website.com/pearl">pearl</a>
  <img class="star-pic" src="/assets/star-gray.png" alt="star pic">
</div>
<div class="ruby-gem">
  <a target="_blank" href="https://www.website.com/diamond">diamond</a>
  <img class="star-pic" src="/assets/star-gray.png" alt="star pic">
</div>

这是我在 application.js 文件中的函数。现在变量 findSrc 未定义。

function checkStorage(){
  var storage = JSON.parse(localStorage.getItem("rubygems"))
  var gems = $(".ruby-gem a").map(function(){
    return $(this).text()
  }).get()
  for (var i = 0; i < gems.length; i++){
    if(storage.includes(gems[i])){
      var gemFavorite = gems[i]
      var findDiv = $("a:contains(gemFavorite)")
      var findImgClass = findDiv.next()
      var findSrc = $(findImgClass).find("img").attr("src")
      if(findSrc == "/assets/star-gray.png"){
        $(findImgClass).attr("src", "/assets/star-blue.png")
      }
    }
  }
}

最终目标是如果项目位于 localStorage 中,则将图像从灰色星形更改为蓝色星形。这可能不是最好的方法,但我无法找到更好的解决方案。

如有任何建议,我们将不胜感激。

最佳答案

您忽略了将 gemFavorite 变量正确插入到选择器字符串中。

var findDiv = $("a:contains(" + gemFavorite + ")")

关于javascript - 使用 JQuery 方法查找类。在 Rails 应用程序中使用 JavaScript 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44912094/

相关文章:

css - form_for 添加一个带有 css 样式的 div 容器

javascript - 使用 jQuery 的each() 打开下载窗口

javascript - CasperJS 评估函数不返回数组

javascript - 使用javascript检查textarea中是否输入了任何html标签

javascript - li slideDown 有效,但是当 slideUp 时它只是弹出而不滑动

ruby-on-rails - 字母替换的更好选择

javascript - 如何让浏览器检测到哈希更改

javascript - 如何检测重叠元素下的点击?

jquery - 将 XPath 选择器转换为 jQuery

Jquery - 将条目添加到右键单击上下文菜单