jQuery each()方法过滤器使用is()方法

时间:2014-12-28 13:18:28

标签: javascript jquery html css

页面的每个输入字段都会有不同的颜色。
例如:任何"输入"元素将是红色边框
任何" textarea"元素将是蓝色边框
任何"选择"元素将是绿色边框
这是我的jquery代码:

    $("input, textarea, select").each(function(event){
        var fields = $(event.fields);
        if( fields.is("input") ) {
            fields.css( "border-color", "red" );
        } else if ( fields.is("textarea") ) {
            fields.css( "border-color", "blue" );
        } else if ( fields.is("select") ) {
            fields.css( "border-color", "green" );
        }
    });

它不起作用,控制台中也没有错误

2 个答案:

答案 0 :(得分:3)

$.each()参数不正确,每个函数在2 nd 参数和1 st 参数索引中提供对象,请尝试此代码

$("input, textarea, select").each(function(index, object){
        var fields = $(object);
        if( fields.is("input") ) {
            fields.css( "border-color", "red" );
        } else if ( fields.is("textarea") ) {
            fields.css( "border-color", "blue" );
        } else if ( fields.is("select") ) {
            fields.css( "border-color", "green" );
        }
});

或者你也可以使用this获取当前的DOM ref

        var fields = $(this);

答案 1 :(得分:0)

而不是

var fields = $(event.fields);

var fields = $(this);

由于

$("input, textarea, select").each(function(event){
    console.log(event.fields);
});

打印undefined - event没有属性fields