我在访问输入标记的类时遇到问题。首先,我正在使用以下代码行,它让我错了。
$('#metaField_932.value').hasClass('hasDatepicker')
然后我使用了以下代码行,它返回了我的真实
$("input[id='metaField_932.value']").hasClass('hasDatepicker')
任何人都可以解释为什么会这样。
注意:代码中没有ID重复。
答案 0 :(得分:4)
试
$("#metaField_932\\.value").hasClass('hasDatepicker')
这是因为#metaField_932.value
正在选择ID为metaField_932
且类为value
的元素。你必须逃脱点角色。
答案 1 :(得分:4)
您的第一行是寻找一个如下所示的HTML元素:
<input id="metaField_392" class="value">
而第二个正在寻找一个看起来更像你的实际HTML元素的那个:
<input id="metaField_392.value">
其中包含.
的任何选择器都表示要搜索具有特定class
的元素。
要解决这个问题,我建议您只使用第二个选择器,或者只是从元素的id
中删除句点,因为这会使其变得相当不清楚。
答案 2 :(得分:1)
逃离 .
\
,因为您正在搜索id
而不是class
而selector
前面有{{1}搜索.
之类的,
class
或
$("input[id='metaField_932\.value']").hasClass('hasDatepicker')
答案 3 :(得分:1)
选择器#metaField_932.value
搜索标识为metaField_932
和类value
的元素。你需要逃避其他人在答案中给出的.
字符。
答案 4 :(得分:0)
首先让我们分析你在第一个代码中传递给jquery的选择器
#metaField_932.value
如果您仔细查看它,则表示选择ID为metaField_932
且类为value
的元素。由于不存在这样的元素,第一个代码不会返回任何内容
现在第二段代码可以正常工作,因为它的属性选择器并没有这样的混乱。
正如F0G已经解释过的那样,你必须使用.
转义\\
,以便jQuery可以将整个选择器解释为id
因此$("#metaField_932\\.value").hasClass('hasDatepicker')
将起作用