javascript - jQuery $(this) 引用未定义

标签 javascript jquery this

我有一段 javascript 代码,用于跟踪表单参与度。我使用 $(this) 将对象传递给脚本中的两个函数,但我接下来的几行代码没有执行,因为 Chrome 说“无法读取未定义的属性‘长度’。为什么我不能使用 $(this )不再引用?

$('select').blur(function () {

                var input_category = get_input_category($(this));

                var form_identifier = get_form_identifier($(this));

                if($(this).attr('name').length) {
// This is where I get the error ^^
                    var object_identifier = $(this).attr('name');
                }
                else if($(this).attr('id').length) {
                    var object_identifier = $(this).attr('id');
                }
                else if($(this).attr('class').length) {
                    var object_identifier = $(this).attr('class');
                }
                else {
                    var object_identifier = null;
                }
});

编辑:选择框没有附加名称值。

                        <select type="select">
                          <option value="volvo">Volvo</option>
                          <option value="saab">Saab</option>
                          <option value="mercedes">Mercedes</option>
                          <option value="audi">Audi</option>
                        </select>

但这不是我的脚本所寻找的吗?如果它没有名字,我希望它继续前进。如何检查属性而不出现错误?

最佳答案

正如 Vega 所见,问题出在 attr('name') 值上。

不要检查对象的长度来检查它的定义,因为当没有可以获取长度的对象时,这会引发错误。

使用通常的 js 模式简单地检查它的定义和非空值:

if ($(this).attr('name'))

而不是

if ($(this).attr('name').length)

请注意,第一个测试还检查这不是 ""。因此绝对没有理由检查对象是否已定义以及是否不是 ""

关于javascript - jQuery $(this) 引用未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12182362/

相关文章:

javascript - Node 开发服务器和 Spring Boot 应用程序之间的跨源请求被阻止

Javascript If/Else 语句更改 img src

jQuery 验证 - 如何忽略字母大小写?

c# - 使用 Javascript/jQuery 在 silverlight 应用程序中显示 youtube 视频

javascript - 在客户端 HTML\JS 脚本中嵌入服务器标签,无需模板引擎

javascript - IE11是否支持window.postMessage()

jquery - CSS/Jquery 如何在按钮下直接显示一个div?

java - Java 中 this 关键字的其他用法

javascript - "this"在我的类(class)中未定义

PHP:在 '$this' 中使用 '$this' ?