jQuery blink(),strike()和粗体方法

时间:2015-05-22 00:17:36

标签: javascript jquery css

我正在尝试解决这个问题:http://jqexercise.droppages.com/#page_0029_

我编写了以下代码并且工作正常。

(function () {
   if($('#target:contains("bold")')) {
      $('#target span:first').css('font-weight','bold');
   } 

   if($('#target:contains("strike")')) {
      $('#target span').eq(1).css('text-decoration','line-through');
   } 

   if($('#target:contains("blink")')) {
      $('#target span:last').css('text-decoration','blink');
   } 
}) ();

他们的解决方案如下。

(function () {
   var target = $('#target');
   var html = target.html();
   html = html.replace('blink',"$&".blink());
   html = html.replace('bold',"$&".bold());
   html = html.replace('strike',"$&".strike());
   target.html(html);
}) ();

我有以下问题,
1)我不明白什么是" $&" in" $&" .blink()," $&" .bold()和" $&" .strike()
2)是否闪烁,加粗并触发jQueryUI方法?

3 个答案:

答案 0 :(得分:4)

这些不是jQuery方法。 jQuery中的所有内容都是$.funcName()形式的函数或者对jQuery对象进行操作的方法,例如: $(something).methodName()

这些是String类的常规Javascript方法:String.prototype.blinkString.prototype.boldString.prototype.strike。他们只是用适当的HTML元素包装他们的参数。但是,它们已被弃用,因为最近使用CSS而不是<blink>之类的旧标记,因此您不应该使用它们。

"$&".replace()方法的一项功能,它会自动替换为原始匹配元素。它在使用正则表达式时非常有用,因为您不知道与模式匹配的确切字符串。

您对该问题的解决方案看起来不会正常运行。它假定每个单词都在其自己的范围内,并且bold位于第一个范围内,strike位于第二个范围内,blink位于第三个范围内。练习的目的是在DIV中找到他们所处的单词,并在该单词周围添加适当的样式。

答案 1 :(得分:1)

JavaScript replace()方法使用正则表达式。 $&语法是匹配表达式的简写;因此它分别代表blinkboldstrike

正如@Daniel A.White在他的回答中提到的,blink()bold()strike()string.prototype中不推荐使用的方法,用于将源字符串包装在标记中。使用的确切标记因浏览器而异;例如,可以返回<b>bold</b>,另一个<strong>bold</strong>和另一个<span style="font-weight: bold">bold</span>

对于它的价值,虽然接受的答案较短,但我发现你的答案更加优雅,因为它易于理解,结果一致,并且基于标准。也就是说,@ Barmar对其所做的假设提出了一些有效的担忧,因此,它在一般情况下是有用的。

答案 2 :(得分:0)