javascript - 为什么我的 jquery .each() 函数不能正常工作?

标签 javascript jquery

我写了这个函数:

jQuery(document).ready(function() {
    jQuery('input[type=text]').each( function(i) {
        thisval = jQuery(this).val();

        jQuery(this).blur( function() {
            if (jQuery(this).val() == '') {
                jQuery(this).val(thisval);
            }
        }); // end blur function
        jQuery(this).focus( function() {
            if (jQuery(this).val() == thisval) {
                jQuery(this).val('');
            };
        });// end focus function
    }); //END each function
}); // END document ready function

它旨在获取输入的值,然后如果用户在没有输入新值的情况下点击离开,则旧值将返回。这适用于页面上的输入之一,但不适用于其他输入。但是,当我删除 .blur 和 .focus 函数并只使用 alert(thisval);它会提醒每个输入的名称,所以我的功能有问题,但我不知道是什么。有帮助吗?

最佳答案

声明变量时需要var,这样它就不是共享的全局变量,如下所示:

var thisval = jQuery(this).val();

此外,由于您专门处理文本输入,因此您可以只使用 .value DOM 属性,像这样:

jQuery(function() {
  jQuery('input[type=text]').each(function(i) {
    var thisval = this.value;
    jQuery(this).blur( function() {
        if (this.value == '') this.value = thisval;
    }).focus( function() {
        if (this.value == thisval) this.value = '';
    });
  });
});

关于javascript - 为什么我的 jquery .each() 函数不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3795134/

相关文章:

Jquery从右向左滑动

javascript - 如果 $.post() 在函数中,jQuery .show() 不会出现

javascript - sinon.js stub - 你能在一个 stub 函数上调用多个回调吗?

javascript - 将图像对齐到主图像的右侧

javascript - 单击链接从父 div 获取数据位置值

jquery - 加载内容后没有页面刷新的html元素问题

php - jQuery 在发布后重置表单?

javascript - 使用 .dropdown() 实现错误下拉菜单 - $ 不是函数

javascript - jquery 如何使用 tr :nth-child(i) 构造每个或 for 循环构造

javascript - 正则表达式模式匹配从 Javascript 中的字符串中提取时间,给出意想不到的结果