我对jquery / javascript很新,并且几乎要花一个小时来编写我需要的东西,所以为了节省时间,我试图写一个条件语句来检查元素的类和还有“type”属性是“text”。这个陈述适用于我只是在追逐.hasClass,并在添加&& 。是( '[文本]')。我的语法错了吗?我有这个,但它不起作用:
if(!$("input").hasClass("input-block-level") && .is('[text]')) {
$("input").addClass("input-block-level");
}
我这样做的原因是我们有通过python和TMPL_VAR动态添加的输入字段。这只是一个创可贴,直到其他团队成员可以更改python脚本,但如果我们在其他地方错过它,也可以作为后退:)
答案 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)
这是你要找的吗?
if(!$("input:text").hasClass("input-block-level")) {
$("input:text").addClass("input-block-level");
}