使变量成为javascript中的类

使变量成为javascript中的类,javascript,Javascript,在我的应用程序中,我有一些像这样的标签 x啤酒x葡萄酒x口香糖熊 如果单击“x”,则应删除标记 标签如下图所示创建,带有围绕“x”的链接。内部的代码是ruby。例如,参数化方法将使Gummy Bears标记类似于“Gummy Bears” <a href="#" class="link tag" data-span="<%= tag.name.parameterize %>"data-question="<%= @question.id %>" data-tag="

在我的应用程序中,我有一些像这样的标签

x啤酒
x葡萄酒
x口香糖熊

如果单击“x”,则应删除标记

标签如下图所示创建,带有围绕“x”的链接。内部的代码是ruby。例如,参数化方法将使Gummy Bears标记类似于“Gummy Bears”

<a href="#" class="link tag" data-span="<%= tag.name.parameterize %>"data-question="<%= @question.id %>" data-tag="<%= tag.name%>" >x</a>

<span class="<%=  tag.name.parameterize %>"><%= tag.name %></span>
例如,如果单击的是Gummy Bear标记,则此.span变量现在将为“Gummy Bear”

然后我想清空类“Gummy Bear”的html,所以我想这样做来计算javascript变量,使其成为类。我以为我可以在#{}中评估javascript,但我想不行:(


有没有一种方法可以完成我想做的事情,基本上是让变量求值,这样它就可以成为同时也是jquery对象的类(也就是说,我可以调用jquery方法)。

您可能混合了服务器端和客户端吗? 试一试

试试这个:

$('.' + this.spanVariable).remove();
这种方法应该避免竞争条件,调用一些ajax,并在它返回时执行一些操作:

$('.xclass').click(function(e) {
  var spanVariable = $(this).data("span");
  $.ajax("/my/server/endpoint?tag=" + spanVariable, {
    dataType: 'json',
    success: function(result) {
      $('.' + result.spanVariable).remove();
      $('.tag[data-span=' + result.spanVariable + ']').remove();
    },
    error: function() {
      console.log('Couldn't remove the tag...');
    }
  }
});

如果需要的话,您可以简单地使用复选框和标签来减少麻烦和样式。jQuery.next()呢?您可以将它们放在一起(它们确实属于一起):@elclanrs您介意演示如何使用复选框吗?但是,如果有其他可用的解决方案,我认为这种方式不是最好的方式(完全是我的错),因为如果用户试图在短时间内单击多个标记,我想知道在服务器端代码响应之前,spanVariable是否会快速更改。这都是客户端的问题……如果您担心这一点,请使用局部变量而不是对象……如果您使用对象更新服务器端的内容,也许您应该这样做考虑用一个数组来跟踪标签,这样服务器不需要试图跟上客户端。谢谢你的建议。在一种方法中(你在OP中看到的方法),我从单击事件中获取数据,然后调用一个方法,该方法执行ajax请求以删除标记服务器端。在成功响应时,调用另一个方法从客户端删除标记(即,一旦我知道它已被服务器端删除)。我如何才能用这种方式跟踪阵列中的位置?我不确定您是如何实现对服务器的调用的,但我正在用一些可能有效的方法更新我的答案…您是对的。我混淆了服务器端和客户端。但是,如果有其他可用的解决方案,我认为这种方式不是最好的方式(完全是我的错),因为如果用户试图在短时间内单击多个标记,我想知道在服务器端代码响应之前,变量是否会快速更改,等等,然后就无法达到预期的效果。
$('.'+this.spanVariable).empty();
$('.' + this.spanVariable).remove();
$('.xclass').click(function(e) {
  var spanVariable = $(this).data("span");
  $.ajax("/my/server/endpoint?tag=" + spanVariable, {
    dataType: 'json',
    success: function(result) {
      $('.' + result.spanVariable).remove();
      $('.tag[data-span=' + result.spanVariable + ']').remove();
    },
    error: function() {
      console.log('Couldn't remove the tag...');
    }
  }
});