2014-02-18 88 views
0

我在文档的顶部有以下coffeescript代码,因此它应该在加载时运行。我需要从一个Ruby变量中获取用户名,如果该用户名与用户名匹配,用户只能删除他们自己的注释。如何有条件地在jQuery中添加css属性(coffeescript)

if $(".comment-username").html() == username 
    $('.comment-entry').addClass('user-comments') 

我HAML看起来是这样的:

%p{:class => "comment-entry"} 
    %b{:class=> "comment-username"}= comment.username 
    = comment.text 

CSS的样子:

.user-comments:hover{ 
    color:red; 
    cursor:pointer; 
} 

似乎没有评论正在选择和改变,但有几个是相同的用户名(通过隐藏值提取)

我的代码有什么问题吗? LD导致这种行为?

+0

“它由一个隐藏的价值是取”是的.comment,一个用户名隐藏的输入字段?如果这样使用'$(“。comment-username”)。val()'。否则,你想使用'$(“。comment-username”).text()。trim()'而不是html()来确定底层字符串 – stakolee

+0

用户名很好,并且在隐藏div中,我使用一个正则表达式来摆脱任何空白或返回,它已经过测试,可用于其他功能。 – onetwopunch

回答

0

这不起作用的主要原因是我只调用一次选择器而不是每次出现该类的实例。此外,我有一些继承问题,如选择需要修复的条目内的用户名。这是正确的工作代码:

$('.comment-entry').each (index) -> 
    if $(this).find('.comment-username').html() == username 
    $(this).addClass('user-comments')  
1

而是通过JS添加类的,你可以做得更快,同时产生HTML文档,摆脱JS的。 假设你有你的观点存储当前登录的用户,并存储用户的用户名的方法name访问@current_user变量:

%p{:class => "comment-entry #{comment.username == @current_user.name ? 'user-comments' : ''}"} 
    %b{:class=> "comment-username"}= comment.username 
    = comment.text 
+0

这对于Ruby字符串中的类很灵敏,但不是它失败的原因。 +1 – onetwopunch

+0

这不适用于我>> className:form-inline collapse #{@state.collapseClassPresent == true?'in':''}“'并且正在生成以下JS代码'className:”form “(”ref = this.state.collapseClassPresent === true)!= null?ref:{'in':''}) – vipin8169

相关问题