2

我在访问输入标签的类时遇到问题。首先,我使用以下代码行,它返回错误。

$('#metaField_932.value').hasClass('hasDatepicker')

然后我使用了以下代码行,它返回了 true

$("input[id='metaField_932.value']").hasClass('hasDatepicker')

谁能解释为什么会这样。

注意:代码中没有 id 重复。

4

5 回答 5

4

尝试

$("#metaField_932\\.value").hasClass('hasDatepicker')

这是因为正在选择带有 id和 class的#metaField_932.value元素。你必须转义点字符。metaField_932value

于 2013-10-31T08:19:56.953 回答
4

您的第一行是寻找如下所示的 HTML 元素:

<input id="metaField_392" class="value">

而第二个正在寻找一个看起来更像您的实际 HTML 元素的元素:

<input id="metaField_392.value">

任何带有 a.的选择器都表示它要搜索带有特定 的元素class

为了解决这个问题,我建议要么只使用第二个选择器,要么简单地从元素的 中删除句点id,因为这使得它相当不清楚。

于 2013-10-31T08:21:26.367 回答
1

逃避 .\因为你在寻找idclass,然后selector是 在.寻找类似的class 东西,

$("input[id='metaField_932\.value']").hasClass('hasDatepicker')

或者

$('#metaField_932\\.value').hasClass('hasDatepicker')
于 2013-10-31T08:21:20.317 回答
1

选择器#metaField_932.value搜索具有 idmetaField_932和 class的元素value。您需要转义.其他人在答案中给出的字符。

于 2013-10-31T08:22:53.463 回答
0

首先让我们分析您在第一个代码中传递给 jquery 的选择器

#metaField_932.value

如果仔细观察,这意味着选择 id asmetaField_932和 class as的元素value。由于不存在这样的元素,第一个代码不返回任何内容

现在第二段代码起作用了,因为它是一个属性选择器并且它没有这样的混乱。

正如 F0G 已经解释的那样,您必须将 with 转义.\\以便 jQuery 可以将整个选择器解释为 id

因此$("#metaField_932\\.value").hasClass('hasDatepicker')应该工作

于 2013-10-31T08:25:41.123 回答