为什么 'this' 未定义?

Why is 'this' undefined?

我有一个名为#question_title 的输入。我想 运行 关于 Blur 事件的 if 语句。当我尝试检查长度时,它返回为未定义。知道为什么 'this' 在这里不起作用吗?

JS

$('#question_title').on('blur', function(){
    console.log('this.length = ' + this.length);
    if ( this.length > 1 ) {
        // do something fabulous
    }
});

HTML

<div class="form-group question-title-wrap">
    <label for="question_title">What is your question?</label>
    <input type="text" class="form-control" id="question_title">
</div>

this 指的是元素本身,而不是它的值,因此错误 undefined 因为在输入元素上没有这样的 属性 (length)。

如果您使用 this.value.length,您将获得该值及其长度。

$('#question_title').on('blur', function(){
    console.log('this.value.length = ' + this.value.length);
    if ( this.value.length > 1 ) {
        // do something fabulous
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-group question-title-wrap">
    <label for="question_title">What is your question?</label>
    <input type="text" class="form-control" id="question_title">
</div>