jquery / coffeescript条件隐藏页面加载

时间:2015-12-05 19:53:06

标签: jquery ruby-on-rails coffeescript

我想在页面加载时隐藏或显示元素,具体取决于另一个元素的值," #init-like"。

if $('span[id^="init-like"]').html() == "true"
  $(this).parent().find('span[id^="like-click"]').hide()

它无法正常工作,因此在进行故障排除时,我将其隐藏或显示在点击上。这很有用。

$('span[id^="init-like"]').click ->
  if $(this).html() == "true"
    $(this).parent().find('span[id^="like-click"]').hide()

我想我在这里遗漏了一些基本的东西,因为我不知道为什么它不能在页面加载上工作。我已经成功地在页面加载时隐藏了其他元素,但没有条件地隐藏在其他任何元素上。

如果它是相关的,我的咖啡因的顶部和底部都是这样的,这有助于turbolinks和jquery一起工作:

ready = ->
  $(document).ready ->
####
$(document).ready(ready)
$(document).on('page:load', ready)

我的总体目标是获得"喜欢"用于显示某件商品是否未被喜欢的按钮;并且如果一件物品被喜欢则隐藏它; "反之亦然"按钮。

如果有更多代码段有用,请告诉我。

编辑:代码是部分代码,因此我必须确保coffeescript不仅适用于第一个实例。

2 个答案:

答案 0 :(得分:1)

问题是:当您不在处理程序中时,您正在使用$(this),因此$(this)实际上是$(window)。因此$(window).parent()为空(window没有父级),而.find()找不到.hide()的任何内容。

因此,只需使用$('span[id^="init-like"]').parent().find('span[id^="like-click"]').hide()完成与点击处理程序相同的操作:

if $('span[id^="init-like"]').html() == "true"
  $('span[id^="init-like"]').parent().find('span[id^="like-click"]').hide()

注意:如果你的元素' id完全是init-like等,使用$('#init-like')作为选择器:这比使用[id^=...]更快(这意味着ID以某些东西开头)

答案 1 :(得分:0)

我缺少的是(正如马库斯指出的那样)我不是处理者,所以我的#34;这个"没有工作。

首先,我点了一下页面加载。那是在下面并且工作正常;但是感谢Marko对this question的回答,我想出了一个我认为更优雅的方法(这并不是很多,考虑到它的优雅程度如何" click&# 34;在页面加载时。)

我欢迎任何改进建议,但内联jQuery在我的目的下运作良好。

方法#1。内联jQuery:

>>> import os
>>> for line in os.popen('tac 1.txt'):
...  do you existing processing here

如果用户喜欢列表,则会隐藏允许用户点击并喜欢列表的跨度类。如果用户不喜欢列表,则将隐藏允许用户单击而不是列表的跨度类。

我使用类似的方法来隐藏当前属于未完成作业的列表,因为<span class="working-<%= list.job_id %>"></span> <span class="like-or-not-<%=current_user.likelists.pluck(:list_id).exclude?(list.id)%>"><%= link_to "+", likelist_path(:list_id => list.id, :user_id => current_user.id), :remote => true %></span> <span class="like-or-not-<%=current_user.likelists.pluck(:list_id).include?(list.id)%>"><%= link_to ":)", likelist_delete_path(:list_id => list.id, :user_id => current_user.id), :remote => true %></span> <script type="text/javascript"> $(".like-or-not-false").hide(); $(".working-1").parent().hide(); </script> 在作业完成时为零。

方法#2(劣等和放弃)。 &#34;单击&#34;在页面加载:

list.job_id