如何寻找双字id?

时间:2014-08-21 08:28:18

标签: javascript jquery html coffeescript

现在我的应用程序提供了某些功能,包括浏览html以获取特定输入。那些输入具有基于用户提供的一些信息的id。因此,如果在,我们称之为input1,用户给我们“第一个”,我们将拥有

<input id="first">

在html的某个地方。

后来javascript需要只根据“first”字符串找到这个输入,使用jquery和coffeescript相当容易:

query = "first"

$("#" + query)

像魅力一样! 当query由两个单词组成时,问题就开始了,比如“第一次输入”。不幸的是,这次我提供的代码无法正常工作。我该怎么做才能改善它?

3 个答案:

答案 0 :(得分:4)

id values不能包含空格,因此您不能拥有input id的{​​{1}},这是无效的HTML。这几乎是HTML对"first input"值施加的唯一规则。 (CSS imposes more除非您使用转义。)

由于它无效,浏览器可以自由地做它喜欢的东西 - 它只能使用第一个单词而忽略第二个单词,它可以使用整个东西,它可以完全抛弃id等等。

实际上,Chrome至少允许使用无效ID,您可以使用属性选择器来匹配它:Live Example

id

注意值周围的引号,因为空间需要它们。

但同样,这些// Don't do this, even if it works in some browsers var query = "first input"; $("[id='" + query + "']"); 无效,浏览器没有义务正确处理它们。您可以考虑用破折号替换空格,例如id

答案 1 :(得分:0)

这很简单,使用属性选择器:

<input id="first second">

使用Javascript:

var query = "first second";
alert($("[id='" + query + "']"));

工作小提琴(已更新)here

答案 2 :(得分:0)

该问题是由jquery命名规则引起的。 “$("#first query")”无法识别。您可以使用“_”替换单词之间的空格。 严格来说,$("#first query")可以被识别,但它获取id为first的标记,tag是“query”。无论如何,它几乎找不到。