jQuery是否有更严格的限制:contains() - 完全匹配的版本?

时间:2016-04-15 20:32:50

标签: jquery

我有一个值为1到16的列表,如

$('#IDul_WeekSelector li:contains("1")').addClass('active');

我想根据文本值添加一个类。我试过这个

/^1$/

问题是我在1和10上都有点击。是否有完全匹配的版本?我查看了其他可用的内容过滤器,但我没有看到。正则表达式可能如下所示:{{1}}

2 个答案:

答案 0 :(得分:1)

第一种方法

您可以利用data-*属性来使用属性选择器,然后执行以下操作:

(当然,这意味着您需要更改HTML以包含data属性)



$(document).ready(function() {
  
  var num = 1;
  
  $('#IDul_WeekSelector li[data-value="' + num + '"]').addClass('active');

});

.active {
  font-weight: bold; 
  background-color: yellow;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="IDul_WeekSelector">
  <li data-value="1">1</li>
  <li data-value="2">2</li>
  <li data-value="3">3</li>
  <li data-value="4">4</li>
  <li data-value="5">5</li>
  <li data-value="6">6</li>
  <li data-value="7">7</li>
  <li data-value="8">8</li>
  <li data-value="9">9</li>
  <li data-value="10">10</li>
  <li data-value="11">11</li>
  <li data-value="12">12</li>
  <li data-value="13">13</li>
  <li data-value="14">14</li>
  <li data-value="15">15</li>
  <li data-value="16">16</li>
</div>
&#13;
&#13;
&#13;

第二种方法

如果您无法修改HTML,那么您可以使用.filter功能并在此时添加CSS课程:

&#13;
&#13;
$(document).ready(function() {
	
  var num = 1, 
      li = $('#IDul_WeekSelector li');
  
  li = li.filter(function() {
    return $(this).text() == num;
  });
  
  li.addClass('active');
  
});
&#13;
.active {
  font-weight: bold;
  background-color: yellow;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="IDul_WeekSelector">
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
  <li>6</li>
  <li>7</li>
  <li>8</li>
  <li>9</li>
  <li>10</li>
  <li>11</li>
  <li>12</li>
  <li>13</li>
  <li>14</li>
  <li>15</li>
  <li>16</li>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

  

是否有$size = get-psdrive c echo $size.used 选择器的完全匹配版本?

不,默认jQuery API中没有任何内容,因此您必须创建自己的选择器,或使用.filter自定义功能。两者都不是特别困难。

使用:contains()的示例是:

.filter