【问题标题】:How can multiple variables be used to create multiple jquery selectors?如何使用多个变量来创建多个 jquery 选择器?
【发布时间】:2015-07-15 04:19:33
【问题描述】:

当我将多个变量转换为多个选择器时,下面的代码无法执行。

DEMO HERE

$('.Btn').on('click', function () {
  var outer = $(this).data('test');
  var inner = $(outer).children('.Inner');
  $(outer + ',' + inner).addClass('Success');
});

在上面的代码中:

这是成功的

$(outer).addClass('Success');

这是成功的

$(inner).addClass('Success');

这不是

$(outer + ',' + inner).addClass('Success');

问题

如何使用多个变量来创建多个 jquery 选择器?

【问题讨论】:

  • 那行不通,因为inner 不是字符串而是对象。

标签: javascript jquery variables jquery-selectors addclass


【解决方案1】:

您的后一种方法仅在两个变量都包含字符串时才有效。在您的情况下,您需要使用 add() 将变量中保存的对象连接在一起:

$(outer).add(inner).addClass('Success');

Updated fiddle

【讨论】:

    【解决方案2】:

    在你的脚本中,outer 是一个字符串,而 inner 是一个 jQuery 对象。您无法将这些值相互关联。当然,你可以将内部类名作为一个字符串来获取,但这有点棘手,而且并不总是很好用……

    如果你必须有 +','+ 语法,这里是解决方案,但正如我提到的,它真的很hacky:

    $('.Btn').on('click', function () {
        var outer = $(this).data('test');
        var inner = '.'+$(outer).children('.Inner').attr('class').split(' ')[0];
        $(outer+', '+inner).addClass('Success');
    });
    

    如果您使用 add() 或 find() 之类的方法处理内部 div,这是一个更好的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多