2

我对 jquery/javascript 还很陌生,几乎要花一个小时来写我需要的东西,所以为了节省时间,我正在尝试编写一个条件语句来检查元素的类以及“类型”属性是“文本”。这个语句在我刚刚检查 .hasClass 时有效,而在添加 && .is('[text]') 时就失败了。我的语法错了吗?我有这个,但它不工作:

if(!$("input").hasClass("input-block-level") && .is('[text]')) {
     $("input").addClass("input-block-level");
}

我这样做的原因是我们有通过 python 和 TMPL_VAR 动态添加的输入字段。这只是一个创可贴,直到其他团队成员可以更改 python 脚本,但如果我们在其他地方错过它,也可以作为后备:)

4

4 回答 4

3

您可能希望将条件更改为:

var $input = $("input");
if($input.hasClass("input-block-level") && $input.is('input:text')) { 
  //your code
}

或者,您可以更改选择器以获取type=text单独的元素:

var $input = $("input[type=text]");
if($input.hasClass("input-block-level")) {
 //your code 
}

另一个好方法是使用filter

$("input[type=text]").filter(":not(.input-block-level)").addClass("input-block-level");
于 2013-07-26T13:01:39.677 回答
2

据我了解,您正在尝试将一个类添加input-block-levelinput没有该类且具有类型的元素text

一个简单的班轮就可以了

$('input:text').not('.input-block-level').addClass("input-block-level");
于 2013-07-26T13:04:15.527 回答
2

addClass() 方法添加类,但不会复制它。你可以去:

$("input[type='text']").addClass('input-block-level');

该函数将循环遍历所有文本输入元素并添加类。如果您有很多输入,这是一个很好的解决方案。

addClass 方法会检查元素是否有它自己的类,你不需要事先检查它。

于 2013-07-26T13:01:46.897 回答
1

这是你要找的吗?

jsFiddle

if(!$("input:text").hasClass("input-block-level")) {
    $("input:text").addClass("input-block-level");
}
于 2013-07-26T13:01:57.440 回答