在jQuery中传递函数之间的变量

时间:2012-01-17 01:53:06

标签: jquery function variables

我正在尝试为网站上的表单制作一个简单的焦点清晰/模糊恢复器,我不能为我的生活弄清楚为什么这不起作用。

$(document).ready(function() {

    $('.form-text').focus(function(keeper) {
        var keeper = $(this).attr('value');
        if($(this).val() == keeper) {
            $(this).val(''); 
        }
        return false;
    });

    $('.form-text').blur(function(keeper) {
        if($(this).val() == '') {
            keeper;
        }
        return false;
    }); 

 });

有什么想法吗?

4 个答案:

答案 0 :(得分:10)

只需在外部范围内设置keeper,不需要是全局的。 并且var keeper = $(this).attr('value'); if($(this).val() == keeper)将永远为真,所以这不是必需的。

$(document).ready(function() {
    var keeper;

    $('.form-text').focus(function() {
        keeper = $(this).val();
        $(this).val('');
        return false;
    });

    $('.form-text').blur(function() {
        if($(this).val() == '') {
            $(this).val(keeper);
        }
        return false;
    }); 
 });

答案 1 :(得分:2)

jQuery提供method to store data for you

集:

$("#selector").data('name', 'value');

获取: var path = $(this).data('name'); // Get the stored resul

答案 2 :(得分:2)

您可能想要var keeper全球。

你可以用这个

var keeper = "";

$(document).ready(function() {

    $('.form-text').focus(function(keeper) {
        keeper = $(this).attr('value');
        if($(this).val() == keeper) {
            $(this).val(''); 
        }
        return false;
    });

    $('.form-text').blur(function(keeper) {
        if($(this).val() == '') {
            keeper;
        }
        return false;
    }); 

 });

答案 3 :(得分:0)

两件事:不是$(this).attr('value')和$(this(.val()引用相同的值,或者我错过了什么?

在“模糊”事件中,您是否使用“守护者”,就好像它是一个方法,而不是一个变量?