0

这可能听起来很傻,但我想优化我的 jQuery 代码以实现这样的目标:

jQuery("#myid).{ // Here, how can I make it work?
    var value = jQuery(this).val();
    if(value == null || value == ""){
     jQuery(this).addClass("error");
    }
    // and so on
}

基本上,我想选择一个 DOM 元素并对其应用各种代码。 我该怎么做?

4

3 回答 3

1

只需将其分配给一个变量:

var $elem = jQuery("#myid");
var value = $elem.val();

if (value == null || value == ""){
    $elem.addClass("error");
}

您也可以使用.each(),因为它只会遍历您的单个元素,但在我看来它有点令人困惑:

jQuery("#myid").each(function(){
    var value = jQuery(this).val();
    if(value == null || value == ""){
     jQuery(this).addClass("error");
    }
    // and so on
})
于 2013-05-22T19:09:18.533 回答
1

使用匿名函数:

jQuery("#myid").addClass(function(){   // To addClass
     return this.value ? 'error' : '';
}).css('width', function() {           // For css
     return this.value || 400;
}).attr("id", function () {            // For attribute change
     return "newID";
});
于 2013-05-22T19:09:22.103 回答
0

如果您有超过 addClass 的操作,请使用.each

$("#myid").each(function() {
    var value = $(this).val();
    if(value == null || value == ""){
      $(this).addClass("error");
    }
    // and so on
});
于 2013-05-22T19:11:29.917 回答