jQuery removeClass通配符

23 浏览
0 Comments

jQuery removeClass通配符

有没有简便的方法可以移除所有匹配的类,例如color-*,所以如果我有一个元素:移除后会变成:谢谢!

0
0 Comments

问题的原因是,用户想要使用jQuery的removeClass函数来移除匹配特定模式的多个类。用户尝试使用正则表达式来匹配类名,并将匹配到的类名拼接起来返回,以便在removeClass函数中使用。然而,用户发现无法将变量传递给正则表达式中的字符串。

解决方法是,用户可以在正则表达式中使用通配符来匹配多个类名。例如,要移除以"-color"结尾的类名,可以使用正则表达式"/\*-color\b/"。用户还可以使用管道符号"|"来匹配多个模式,例如匹配以"color-"、"sport-"或"nav-"开头的类名可以使用正则表达式"/(^|\s)(color-|sport-|nav-)\S+/g"。

此外,用户还可以使用单词边界符"\b"来匹配单词边界,而不是使用"(^|\s)"来匹配空格和类名开头。例如,要移除所有以单词"magic"后跟非负整数的类名,可以使用正则表达式"/\bmagic\d+\b/"。

如果用户想要将变量传递给正则表达式中的字符串,可以使用字符串拼接的方式将变量与正则表达式拼接起来。例如,要将变量myVar的值拼接到正则表达式中,可以使用正则表达式"/(^|\s)"+myVar+"S+/g"。

总结起来,用户在使用jQuery的removeClass函数时遇到了需要匹配多个类名的需求。通过使用正则表达式的通配符和特殊符号,用户可以实现匹配多个类名并移除它们的目的。同时,用户还可以通过字符串拼接的方式将变量传递给正则表达式中的字符串,以实现更灵活的匹配功能。

0
0 Comments

问题的出现原因是在使用jQuery的removeClass方法时,如果传入的参数是一个通配符(即正则表达式),会出现报错"TypeError: Cannot call method 'replace' of undefined",主要是因为在遍历class属性时,有可能出现class属性的值为undefined的情况。

解决方法是在遍历class属性之前,先进行判断,如果class属性的值为undefined,则跳过该元素的处理。具体的代码如下:

$('div').attr('class', function(i, c){
    return c && c.replace(/(^|\s)color-\S+/g, '');
});

这样就可以避免出现TypeError的报错了。

0
0 Comments

问题的出现原因是作者在编写插件时,需要使用通配符匹配来移除元素的类名。作者在代码中使用了jQuery的removeClass()方法,但该方法并不支持通配符匹配。因此,作者需要寻找一种解决方法来实现通配符匹配并移除类名。

解决方法是作者编写了一个名为alterClass的插件来解决这个问题。该插件使用了通配符匹配来移除元素的类名。作者提供了一个示例代码,其中使用了alterClass方法来移除Twitter Boostrap的类名。

以下是作者提供的示例代码:

$( '#foo' ).alterClass( 'foo-* bar-*', 'foobar' );
$(".search div").children('div').alterClass('span* row-fluid');

还有一个链接,指向alterClass插件的代码。通过该插件,作者可以方便地使用通配符匹配来移除元素的类名,实现了自己的需求。

文章完整内容如下:

作者编写了一个名为alterClass的插件,该插件可以移除元素的类名,并支持通配符匹配。作者提供了一个示例代码来演示插件的使用:

$( '#foo' ).alterClass( 'foo-* bar-*', 'foobar' );
$(".search div").children('div').alterClass('span* row-fluid');

作者在编写插件时遇到了一个问题,即jQuery的removeClass()方法并不支持通配符匹配。为了解决这个问题,作者编写了alterClass插件。通过该插件,作者可以方便地移除元素的类名。

作者提供了一个链接,指向alterClass插件的代码。通过该插件,作者成功地重用了一些代码,并使用通配符匹配来移除了Twitter Boostrap的类名。

如果你也遇到了类似的问题,可以点击这里查看alterClass插件的代码:https://gist.github.com/1517285

0