javascript - Jquery:将变量传递给下一个链接函数,这是正确的方法吗?

标签 javascript jquery function variables

我想知道这是否正确。

$('.myfilter').focus(function(){
    var length = $(this).val().length; 
    if (length == 0) {
        dosomething
    }
}).blur(function(length){
    if (length == 0) {
        dowhatever
            }
})

上面我已经简化了我的代码,我只是检查 length == 0 是否聚焦并模糊我的输入。请注意我是如何声明 length 的,而不是模糊的,但是我在 .blur(function(length){ 中添加了变量名。这是获得更好的方法吗length 可在 .blur 中访问,而无需在 .blur 中重新声明 var length = $(this).val().length;

与此相反:

$('.myfilter').focus(function(){
    var length = $(this).val().length; 
    if (length == 0) {
        dosomething
    }
})

$('.myfilter').blur(function(length){
    var length = $(this).val().length;
    if (length == 0) {
        dowhatever
            }
})

第一个代码块是更好的方法吗?

最佳答案

完全不声明任何变量怎么样...:)

$('.myfilter').focus(function() {
    if ( this.value.length === 0 ) {
        dosomething();
    }
}).blur(function(length) {
    if ( this.value.length === 0 ) {
        dowhatever();
    }
});

另外,这个:

$('.myfilter').bind('focus blur', function(e) {
    if ( this.value.length === 0 ) {
        e.type === 'focus' ? dosomething() : dowhatever();
    }
});

使用变量

如果您需要多次使用某个值,通常您想使用一个变量。但是,在这种情况下,您只需要一次 this.value.length 值(在 if header 中)。因此,您可以直接将此值注入(inject)到 if-header 中。

$(this) 对比

为了了解何时使用 which,您需要了解 DOM 元素对象和 jQuery 对象之间的区别。 jQuery 对象是一个包装器对象,它包含零个或多个 DOM 元素对象(如数组)。重要的是要了解您只能在 jQuery 对象上调用 jQuery 方法(如 .addClass()),而不能直接在 DOM 元素上调用。

在事件处理程序函数中,this 值指的是触发事件的 DOM 元素。现在,如果您想在该 DOM 元素上调用 jQuery 方法,您需要将该 DOM 元素包装在一个 jQuery 对象中 - 您可以通过编写 $(this) 来实现。

$(this).addClass('selected'); // works fine
this.addClass('selected'); // throws Error

关于javascript - Jquery:将变量传递给下一个链接函数,这是正确的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6413440/

相关文章:

javascript - 如何修复我的 CSS 下拉菜单

javascript - jQuery:轮播的媒体查询

c++ - 如何将类的方法传递给 C++ 中的另一个函数?

R 函数没有返回值

javascript - URL 片段和 BASE 标记

javascript - 从文本框中收集数字,对它们进行排序,然后按数字将它们放回去?

java - CardPile 错误,无法编译。

javascript - Vue 中使用的 Momentjs 显示 UTC 时间,但应为本地时间

javascript - Bootstrap 切换按钮保持灰色

python - 将列表或单个整数作为参数处理