0

我尝试使用此功能

这是完整的html:

<html>
   <head>
      <script src="http://code.jquery.com/jquery-latest.js"></script>
   </head>
   <body>
     <div id="test" style="width:auto;max-width:150px;"></div>
     <script>
       (function($)
       {
           $.fn.removeStyle = function(style)
           {
               var search = new RegExp(style + '[^;]+;?', 'g');

               return this.each(function()
               {
                   $(this).attr('style', function(i, style)
                   {
                       return style.replace(search, '');
                   });
               });
           };
       }(jQuery));
       $(function(){
         $('#test').removeStyle('width');
       });
     </script>
   </body>
</html>

但我遇到了这个问题:

<div id="test" style="max-"></div>
4

6 回答 6

3

按照您发布的方式进行操作:只需将您的正则表达式修改为 match style,但不要 match -style

以正确的方式做到这一点:您可以简单地使用:

$('#test').css('width', ''); 

是一个简单的小提琴,它演示了使用.css()删除背景。

于 2013-10-31T12:23:23.937 回答
2

我认为您不想删除所有样式,只需删除width: auto;

正则表达式匹配 *width:*,因此它匹配 max -width: 150px;.

试试这个:

var search = new RegExp('(^|;)' + style + '[^;]+;?', 'g');

此正则表达式将期望 a) 字符串的开头或 b) 在匹配字符串的另一部分之前的分号。

另请参阅:http: //jsfiddle.net/P5dfz/

于 2013-10-31T12:39:03.097 回答
1

您应该使用 jQuery.css()来操作样式:

$('#test').css("width","");
于 2013-10-31T12:23:54.860 回答
1
(function($)
   {
       $.fn.removeStyle = function(style)
       {
           var search = new RegExp(style + '[^;]+;?', 'g');

           return this.each(function()
           { 
               $(this).css(style,'');
               /*$(this).attr('style', function(i, style)
               { 
                   return style.replace(search, '');
               });*/
           });
       };
   }(jQuery));
   $(function(){
     $('#test').removeStyle('width');
   });

修改你的功能请看小提琴http://jsfiddle.net/UA9CF/

于 2013-10-31T12:33:16.787 回答
0

如果要删除完整的内联样式属性,则可以简单地使用它。

$('#test').removeAttr('style');
于 2013-10-31T12:29:51.650 回答
0

但是你问,如何删除内联样式,所以如果你想从给定范围内的某些元素中删除整个样式标签,你可以尝试如下所示:

说你的标记是这样的:

<div id="parent">
   <div style="background-color:red; width:100px; height:100px" >
      <div style="background-color:green; width:50px; height:50px" >
      </div>
   </div>
</div>
<div style="background-color:#CCC; width:50px; height:50px" >
</div>

并且您想使用 id 删除 div 内元素的样式标签parent

$('div',"#parent").removeAttr('style'); //$(selector, scope)

或者更简单的东西:

$("#parent").find('div,a').removeAttr('style'); //div,a or other element types
于 2013-10-31T12:30:55.567 回答