jquery条件 - 检查class =“”并输入type =“”

时间:2013-07-26 12:58:14

标签: jquery twitter-bootstrap

我对jquery / javascript很新,并且几乎要花一个小时来编写我需要的东西,所以为了节省时间,我试图写一个条件语句来检查元素的类和还有“type”属性是“text”。这个陈述适用于我只是在追逐.hasClass,并在添加&& 。是( '[文本]')。我的语法错了吗?我有这个,但它不起作用:

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

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

4 个答案:

答案 0 :(得分: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");

答案 1 :(得分:2)

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

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

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

addClass方法将检查元素是否具有自己的类,您不需要先检查它。

答案 2 :(得分:2)

根据我的理解,您尝试将input-block-level类添加到input元素中,这些元素没有类且类型为text

一个简单的衬垫就可以了

$('input:text').not('.input-block-level').addClass("input-block-level");

答案 3 :(得分:1)

这是你要找的吗?

jsFiddle

if(!$("input:text").hasClass("input-block-level")) {
    $("input:text").addClass("input-block-level");
}