为什么“$(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() && ... ) {