尽管Chrome开发者工具控制台已验证,但jQuery slice()无法正常工作

时间:2018-08-08 12:25:50

标签: javascript jquery

这是一个非常奇怪和简单的问题,对于FAR,我现在停留的时间比我想承认的还要长!我的slice()函数不再起作用。我已经检查了十亿次语法。这似乎一直在起作用,这是最复杂的事实。

jQuery(document).ready(function($){
   jQuery("h2.page_title").css('background','lime');
   jQuery("h2.page_title").text().slice(2);
});

enter image description here

文件和功能运行良好,因此背景为石灰。但是,slice()将不起作用,甚至无法通过我的控制台进行更新。我在DOM中定位哪个元素都没有关系。我已经清除了缓存,重新启动了所有WAMP服务,等等。我知道真正的解决方案非常愚蠢,因此,如果您对导致此问题的技巧有任何建议,将不胜感激。

3 个答案:

答案 0 :(得分:2)

使用slice时,原始字符串不变。它只会返回切片的字符串。您应该自己分配-

var str = jQuery("h2.page_title").text().slice(2);
jQuery("h2.page_title").text(str);

或一行-

jQuery("h2.page_title").text(jQuery("h2.page_title").text().slice(2));

答案 1 :(得分:1)

在我的拙见中,jQuery slice()实际上是一个令人误解的名称,会引起混淆,因为它与本机JavaScript slice(对于在此处使用的字符串)并不完全相同。 jQuery slice返回一个jQuery对象,而不是字符串。

jQuery .slice()属于“ Traversing and Filtering”类别。

  

“将匹配的元素集减少为范围指定的子集   索引。”

jQuery slice:https://api.jquery.com/slice/

原生字符串JavaScript .slice()返回字符串

  

“ ...提取字符串的一部分并将其作为新字符串返回,   而不修改原始字符串。”

SO,以解决您的具体情况,

jQuery("h2.page_title").text().slice(2);

返回从文本索引2开始的字符串-您对该字符串不执行任何操作。

答案 2 :(得分:0)

如果要切片前两个字符,可以使用text(function)返回结果。这还将遍历任何选择器,并对所有选择器进行实例特定的切片

jQuery("h2.page_title")
   .css('background','lime')
   .text(function(_, currTxt) {
      return currTxt.slice(2);
   });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h2 class="page_title">First heading</h2>
<h2 class="page_title">Second heading</h2>