仅当缺少类时 JQuery 输入复选框才设置类

发布于 2024-10-29 08:16:37 字数 424 浏览 2 评论 0原文

仅当复选框缺少预先存在的类时,我才想将类设置为复选框。另请注意,它可能包含空类,然后也用新类覆盖它。 我正在使用以下内容,但我应该如何将条件添加到查找中?

$(this).find("input[type='radio'],input[type='checkbox']").addClass('IE8Border');

我正在朝这个方向努力:

$(this).find("input[type='radio'],input[type='checkbox']").each(function() {
    $(this)[("[class='']")].addClass('IE8Border');
    $(this)[(":not([class])")].addClass('IE8Border');
});

I want to set class to Checkbox only if preexising class is missing for the checkbox. Also note it it may contain empty class then also overwrite it with new class.
I'm using following but how should I add the condition to the find?

$(this).find("input[type='radio'],input[type='checkbox']").addClass('IE8Border');

I'm trying in this direction:

$(this).find("input[type='radio'],input[type='checkbox']").each(function() {
    $(this)[("[class='']")].addClass('IE8Border');
    $(this)[(":not([class])")].addClass('IE8Border');
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

无语# 2024-11-05 08:16:41

我完全同意 Cyber​​nate 的回答。但是您只是想添加一个类还是想覆盖?对于后一种尝试:

$("input[type='radio'],input[type='checkbox']",this).filter(function(){
    var thisClass = $(this).attr("class");
    return !(thisClass && thisClass.length > 0);
}).removeAttr('class').addClass('IE8Border');

为了扩展 Cyber​​nate 的答案,您还可以使用 not() 函数来代替 filter()

$("input[type='radio'],input[type='checkbox']").not('.IE8Border').addClass('IE8­Border');

I fully agree on Cybernate's answer. But do you just want to add a class or do you want to overwrite? For the latter one try:

$("input[type='radio'],input[type='checkbox']",this).filter(function(){
    var thisClass = $(this).attr("class");
    return !(thisClass && thisClass.length > 0);
}).removeAttr('class').addClass('IE8Border');

and to extend of Cybernate's answer, instead of filter(), you can also use the not() function.

$("input[type='radio'],input[type='checkbox']").not('.IE8Border').addClass('IE8­Border');
时光匆匆的小流年 2024-11-05 08:16:40

我有点不清楚你在问什么,所以我有两个答案给你:

如果你试图避免添加重复的类(即添加 IE8Border 两次),你不需要过滤任何东西。 .addClass() 仅当元素上尚不存在该类时才会添加该类。

如果您只想向那些还没有类的元素添加类,请尝试以下操作:

$(this).find("input[type='radio'],input[type='checkbox']").filter(function() {
   return this.className === '';
}).addClass('IE8Border');

看看在这个演示中看看它的工作原理 ->

I'm a little unclear on what you're asking, so I have two answers for you:

If you are trying to avoid adding duplicate classes (i.e. adding IE8Border twice), you don't need to filter anything. .addClass() will only add the class if it doesn't already exist on the element.

If you want to add a class to only those elements that don't already have a class, try this:

$(this).find("input[type='radio'],input[type='checkbox']").filter(function() {
   return this.className === '';
}).addClass('IE8Border');

Have a look at this demo to see this working ->

不甘平庸 2024-11-05 08:16:39

您可以使用 hasClass 来检查是否已添加类。

试试这个:

$(this).find("input[type='radio'],input[type='checkbox']").filter(function(){
    return !$(this).hasClass('IE8Border');
}).addClass('IE8Border');

您还可以避免使用以下版本的过滤器:

$(this).find("input[type='radio']:not(.IE8Border),input[type='checkbox']:not(.IE8Border)").addClass('IE8Border'); 

编辑:
如果您只是检查某个类是否存在,请尝试以下操作:

$(this).find("input[type='radio'],input[type='checkbox']").filter(function(){
  var thisClass = $(this).attr("class");
    return !(thisClass && thisClass.length > 0);
}).addClass('IE8Border');

You can use hasClass to check if a class was already added.

Try this:

$(this).find("input[type='radio'],input[type='checkbox']").filter(function(){
    return !$(this).hasClass('IE8Border');
}).addClass('IE8Border');

You can also avoid using filter with the following version:

$(this).find("input[type='radio']:not(.IE8Border),input[type='checkbox']:not(.IE8Border)").addClass('IE8Border'); 

EDIT:
If your check is just for existence of a class then try this:

$(this).find("input[type='radio'],input[type='checkbox']").filter(function(){
  var thisClass = $(this).attr("class");
    return !(thisClass && thisClass.length > 0);
}).addClass('IE8Border');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文