选择同名元素时出现JQuery语法错误

时间:2013-06-15 01:14:13

标签: jquery

我想选择具有相同名称的输入,但会出现语法错误:

$("input[name=$(this).prop('name')]"); 

但是我能够通过$(this).prop('name')得到字符串。

修改

感谢您的所有答案。我认为他们都有效。但有人可以解释为什么开头和结尾的两个加号使得jquery代码在字符串中解析?参考将不胜感激,谢谢

EDIT2:

我知道加号用于字符串连接。但在这种情况下,没有任何东西在第一个+之前或之后+。那么这里连接的是什么?对不起,如果这个问题看起来太天真了

4 个答案:

答案 0 :(得分:4)

应该是这样的:

$("input[name='"+$(this).prop('name')+"']"); 

jQuery不解析字符串上的jQuery代码。要执行它,您应该将jQuery prop()函数放在字符串之外。

答案 1 :(得分:3)

  
    

但是有人可以解释为什么开头和结尾的两个加号会在字符串中解析jquery代码吗?

  

让我们一步一步地看一下。

首先,让我们采取原始方法:

$("input[name=$(this).prop('name')]"); 

函数“$”(jQuery的别名)将使用字符串参数调用:

"input[name=$(this).prop('name')]"

jQuery将解析此字符串并将其解释为:

/* 
Okay, I need to find an <input> 
that has an attribute "name", 
and the value of that attribute has to be, literally, "$(this).prop('name')". 
So, I'm looking for something that looks like this: */

<input name="$(this).prop('name')" />

然而,您可能想要找到的更像是这样:

<input name="some name, actually" />

(以及“某些名称,实际上”将在您拨打原始电话时的$ this的名称属性中)

现在让我们看一下新方法:

写作时

$("input[name=" + $(this).prop('name') + "]");

您正在构建JavaScript对象的部分字符串。您正在使用$(this)(这是一个jQuery对象),调用其函数“prop”来检索名为“name”的属性,并在新查询中使用该函数的输出。所以如果$(this).prop('name')返回“AWESOME”,你就是要求jQuery找到这样的东西:

<input name="AWESOME" />

这应该更像你在寻找的东西!

答案 2 :(得分:2)

您确实在寻找名为input的{​​{1}}元素。你想要做的是写下这样的东西:

$(this).prop('name')

答案 3 :(得分:2)

尝试这样的事情:

$("input[name=" + $(this).prop('name') + "]");