我想在页面加载时隐藏或显示元素,具体取决于另一个元素的值," #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不仅适用于第一个实例。
答案 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