JQuery获取元素数组并更改其CSS
JQuery getting an array of elements and changing their CSS
这太奇怪了。。。我试图为一些表单创建一个验证函数,但我似乎无法对JQuery提供的数组中的元素运行任何JQuery
当它到达.css行时就会中断。我在.val((和sceond.css.Waaaaat上也有类似的问题?
function isRequiredFilled(prepend){
var reqs = $(prepend + ' .required');
var filled = true;
for(var i=0; i<reqs.length; i++){
reqs[i].css("background-color", "white");
if(!reqs[i].val()){
reqs[i].css("background-color", "rgba(200, 0, 0, 0.7f");
filled = false;
}
}
return filled;
}
为什么您的代码不能像其他答案中解释的那样工作。这里有一个更具jQuery风格的解决方案:
function isRequiredFilled(prepend){
var reqs = $(prepend + ' .required').css("background-color", "white");
var empty_reqs = reqs.filter(function() {
return !this.value;
}).css("background-color", "rgba(200, 0, 0, 0.7)");
return empty_reqs.length === 0;
}
function isRequiredFilled(prepend){
var reqs = $(prepend + ' .required');
var filled = true;
for(var i=0; i<reqs.length; i++){
var $req = $(reqs[i]);
$req.css("background-color", "white");
if(! $req.val()){
$req.css("background-color", "rgba(200, 0, 0, 0.7f");
filled = false;
}
}
return filled;
}
执行reqs[i]
时,得到的是DOM元素,而不是jQuery对象。您没有访问jQuery方法的权限。使用.eq()
:
reqs.eq(i).val();
reqs.eq(i).css();
//Etc.
.eq()
缓存元素也是一个好主意:
var $myEl = reqs.eq(i);
使用类似的东西:
function isRequiredFilled(prepend){
var reqs = $(prepend + ' .required');
var filled = true;
for(var i=0; i<reqs.length; i++){
var $currentReq = reqs.eq(i)
$currentReq.css("background-color", "white");
if(!$currentReq.val()){
$currentReq.css("background-color", "rgba(200, 0, 0, 0.7f)");
filled = false;
}
}
return filled;
}
使用each
怎么样?https://api.jquery.com/each/
function isRequiredFilled(prepend){
var reqs = $(prepend + ' .required');
var filled = true;
reqs.each(function (i, req) {
req.css("background-color", "white");
if (!req.val()){
req.css("background-color", "rgba(200, 0, 0, 0.7f)");
filled = false;
}
});
return filled;
}
还添加了一个缺失的)
。
以上注释是正确的——reqs[i]
将为您提供DOM元素,但由于您想在元素上调用jQuery方法val()
和css()
,因此您真正想要的是引用该DOM元素的jQuery对象。
用以下内容替换您的功能:
function isRequiredFilled(prepend){
// Added $ to variable name as per jQuery coding convention
var $reqs = $(prepend + ' .required');
var filled = true;
for (var i = 0; i < reqs.length; i++) {
// jQuery object that references your desired DOM node
var $el = $reqs.eq(i);
// do stuff with the $el variable
$el.css("background-color", "white");
if (!$el.val()) {
$el.css("background-color", "rgba(200, 0, 0, 0.7f");
filled = false;
}
}
return filled;
}
相关文章:
- 获取HTML属性中CSS声明的值
- 在jquery中使用css获取背景值
- 使用javascript和css选择器获取value属性的内容
- 使用javascript获取具有特定CSS属性的所有元素
- 快递.js无法获取我的 CSS 文件
- 如何通过chrome扩展名获取所有CSS和Javascript文件
- 使用纯 Js 或 jquery 获取相同的 64 个类的 CSS 属性值
- 从类(动态)中获取css属性并将其添加到另一个类中
- 如何在样式元素中获取 CSS 代码
- 获取脚本中CSS颜色属性的实际值
- 使用regex从css文件中获取所有类(以文本形式)
- 如何使用javascript获取元素的css选择器
- 如何从CSS中获取颜色的值
- Javascript获取元素CSS过渡阶段
- 如何在 Javascript 中获取 CSS 类属性
- 以非像素为单位获取HTML DOM元素的CSS高度,在我的例子中是英寸
- 如何使用jquery从类中获取css属性
- Javascript正则表达式,用于从Css获取所有媒体查询
- CSS获取父元素属性
- jQuery /CSS -获取相对元素的位置,相应位置的工具提示