jQuery类选择器“class_name”vs“.class_name”

时间:2015-04-23 01:42:45

标签: jquery css class selector

在查看jQuery示例时,我看到引用了前缀“。”的CSS类。有时和其他时间没有。例如,在codecademy的这个片段中:

else if(event.which === 110) {
  var currentArticle = $('.current');
  var nextArticle = currentArticle.next();

  currentArticle.removeClass('current');

为什么第二行需要选择器$('。current'),但第四行只需要('current')?

6 个答案:

答案 0 :(得分:1)

$('.current')中(或者在find / next等方法中,您尝试查找具有给定类的元素),我们使用了一个选择器,因此类选择器的符号在{{1}之前必须使用。

当您添加/删除/切换某个类时,您没有使用选择器,您只是使用了一个名称,因此没有使用.

答案 1 :(得分:1)

这是一个惯例。

在第二行$(' .current')告诉jQuery搜索名为" current"并且点将其指定为类。所以我们需要调用" .current"

在第4行,您已经告诉jQuery您将使用" removeClass"来选择一个类。所以你不需要在那里使用点。因为那就像" removeClass当前是一个类"

答案 2 :(得分:0)

该方法明确使用术语 Class

否则,您将始终需要一个类选择器, if 这是您定位元素的方法(您可以通过ID,数据属性,HTML标记进行定位)。

答案 3 :(得分:0)

jQuery选择器设计了CSS属性,因此可以使用相同的语法,你也可以使用class选择器不同的方式,如$(“[current]”)它将作为HTML标记元素使用正常。

函数removeClass()没有将类作为选择器,函数宣布只对类正确使用所以不需要确定传递值,尽管函数将值作为字符串而不是<selector>

答案 4 :(得分:0)

我认为

var currentArticle = $('.current');

这里你需要一个点,因为它意味着你通过类匹配来选择它。

在下面:

currentArticle.removeClass('current');

您已指定删除某个类,但您不需要点,因为此处它不是选择器,而是您要删除的类名。

答案 5 :(得分:0)

removeClass() AND $('.current')都是方法,您可以将参数传递给方法,唯一的一点就是jQuery使用的约定。尝试将您的类命名为<div class='.current'>I am a div</div>并尝试此console.log($('..current').text());您将遇到此错误Error: Syntax error, unrecognized expression: ..testA所以基本上是jQuery的规则/约定。