为什么“$(this)”在以下示例中不起作用

HTML:

  

jQuery的

 $(function () { if (!$(".test").val()) { alert("Empty"); $(this).addClass("removeMe"); } else { alert("not Empty"); $(this).addClass("addMe"); } }); 

为什么$(this)在这里不起作用? 如果要包含多个元素( .test ),例如3: if (!$(".test, .test2, .test3").val()) {

问题是因为代码直接在document.ready处理程序中运行,因此属于document的范围,因此this指的是document

要实现您的需求,最好缓存一个选择器并再次使用它来添加所需的类,如下所示:

 $(function () { var $test = $('.test'); if (!$test.val()) { console.log("Empty"); $test.addClass("removeMe"); } else { console.log("not Empty"); $test.addClass("addMe"); } }); 

如果要包括多个元素,例如3: if (!$(".test, .test2, .test3").val()) {那么可以做什么呢?

在这种情况下,您需要单独测试每个元素:

 if (!$('.test1').val() && !$('.test2').val() && ... ) {