我想选择具有相同名称的输入,但会出现语法错误:
$("input[name=$(this).prop('name')]");
但是我能够通过$(this).prop('name')
得到字符串。
修改
感谢您的所有答案。我认为他们都有效。但有人可以解释为什么开头和结尾的两个加号使得jquery代码在字符串中解析?参考将不胜感激,谢谢
EDIT2:
我知道加号用于字符串连接。但在这种情况下,没有任何东西在第一个+之前或之后+。那么这里连接的是什么?对不起,如果这个问题看起来太天真了
答案 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') + "]");