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

How can multiple variables be used to create multiple jquery selectors?

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

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 选择器?

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

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

Updated fiddle

在你的脚本中,outer 是一个字符串,而 inner 是一个 jQuery 对象。您不能将这些值相互联系起来。当然,您可以将内部 class 名称作为字符串获取,但这有点棘手,而且并不总是有效...

如果您必须使用 +','+ 语法,这里是解决方案,但正如我提到的,它真的很老套:

$('.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,这是一个更好的解决方案。