Jquery hasClass方法不起作用

时间:2013-10-31 08:17:18

标签: jquery html

我在访问输入标记的类时遇到问题。首先,我正在使用以下代码行,它让我错了。

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

然后我使用了以下代码行,它返回了我的真实

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

任何人都可以解释为什么会这样。

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

5 个答案:

答案 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而不是classselector前面有{{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')将起作用