为什么 attr() 在相同的情况下工作而 text() 不起作用?jQuery


  1. 抱歉标题太差了。

  2. 我已经为我的变量分配了选择器,并将其与attr()链接,然后在另一个地方将其与text()链接,但text()部分不起作用,我真的不明白为什么。

有人能帮我一下是什么原因导致它不起作用吗?

var alertMsg = "";
var $closestLabel = $(this).closest('label');
$(".credit-error-msg").each(function(){
    // console.log($(this).closest('label').text());
    if($closestLabel.attr('for') != "billing-unit"){  //works here
        if($(this).text() != ""){
            alertMsg += $(this).closest('label').text().toUpperCase() + "n"; //doesn't work here that I have to write the whole thing out
            val = false;
        }
    }
});

查看我将选择器var $closestLabel = $(this).closest('label');分配到的位置当我在if语句中使用$closestLabel时,这非常有效,但当它在第二个if语句中时,我必须使用$(this).closest('label').text(),因为$closestLabel.text()不起作用。

但正如我所看到的,$(this).closest('label').text()==$closestLabel.text()$(this).closest('label').attr()==$closestLabel.attr()不是吗?

提前感谢您的帮助。

在您的情况下,each中的$(this).closest('label')var $closestLabel = $(this).closest('label'); 不同

CCD_ 16内部的CCD_ 15是选择器CCD_

而此时的thisvar $closestLabel = $(this).closest('label');可能是window对象。

我之所以这么说,可能是因为我不知道你在代码的哪里,在哪个范围内调用这个片段。

最新更新