我在访问输入标签的类时遇到问题。首先,我使用以下代码行,它返回错误。
$('#metaField_932.value').hasClass('hasDatepicker')
然后我使用了以下代码行,它返回了 true
$("input[id='metaField_932.value']").hasClass('hasDatepicker')
谁能解释为什么会这样。
注意:代码中没有 id 重复。
尝试
$("#metaField_932\\.value").hasClass('hasDatepicker')
这是因为正在选择带有 id和 class的#metaField_932.value
元素。你必须转义点字符。metaField_932
value
您的第一行是寻找如下所示的 HTML 元素:
<input id="metaField_392" class="value">
而第二个正在寻找一个看起来更像您的实际 HTML 元素的元素:
<input id="metaField_392.value">
任何带有 a.
的选择器都表示它要搜索带有特定 的元素class
。
为了解决这个问题,我建议要么只使用第二个选择器,要么简单地从元素的 中删除句点id
,因为这使得它相当不清楚。
逃避 .
是\
因为你在寻找id
不class
,然后selector
是 在.
寻找类似的class
东西,
$("input[id='metaField_932\.value']").hasClass('hasDatepicker')
或者
$('#metaField_932\\.value').hasClass('hasDatepicker')
选择器#metaField_932.value
搜索具有 idmetaField_932
和 class的元素value
。您需要转义.
其他人在答案中给出的字符。
首先让我们分析您在第一个代码中传递给 jquery 的选择器
#metaField_932.value
如果仔细观察,这意味着选择 id asmetaField_932
和 class as的元素value
。由于不存在这样的元素,第一个代码不返回任何内容
现在第二段代码起作用了,因为它是一个属性选择器并且它没有这样的混乱。
正如 F0G 已经解释的那样,您必须将 with 转义.
,\\
以便 jQuery 可以将整个选择器解释为 id
因此$("#metaField_932\\.value").hasClass('hasDatepicker')
应该工作