簡體   English   中英

jquery焦點模糊傳遞參數

[英]jquery focus blur pass parameter

我似乎無法在我的.blur()函數中訪問變量defaultValue 我嘗試了各種各樣的東西,但沒有運氣。 到目前為止,我只得到一個空物體。 怎么了?

jQuery(document).ready(function(){

    jQuery('#nameInput, #emailInput, #webInput').focus(function(){      
        var defaultValue = jQuery(this).val();
        jQuery(this).val("");
    })
    .blur(function(defaultValue){   
         if(jQuery(this).val() == ""){
             jQuery(this).val(defaultValue);
         }
    }); 

});

看起來問題是將數據傳遞到.blur或.focus事件。 每個jQuery API - http://api.jquery.com/blur/

blur( [eventData ], handler(eventObject) )

因此,如果您想傳遞數據 - 您可以將參數發送到事件 - 它將在事件對象中顯示為數據。

看到這個小提琴更多信息

http://jsfiddle.net/dekajp/CgP2X/1/

var p = {
    mydata:'my data'
};

/* p could be element or whatever */
$("#tb2").blur(p,function (e){
    alert('data :'+e.data.mydata);
});

因為你的代碼是錯誤的:-)你定義了var inside函數( var defaultValue ),然后立即將其刪除。

有兩種解決方案:在綁定模糊事件之前將var定義為全局變量,或者將其存儲在對象數據中(我建議):

$(document).ready(function(){
    $('#nameInput, #emailInput, #webInput').focus(function(){      
        $(this).val("").data('defaultValue',jQuery(this).val());
    }).blur(function(defaultValue){   
        if($(this).val() == ""){
            $(this).val($(this).data('defaultValue'));
        }
    }); 
});

在我看來,你不了解JavaScript的基礎知識。

首先,JS中的變量被本地化為函數的作用域,因此您不能在一個函數中使用var聲明變量並在其他函數中訪問它

其次,你不能將任何東西傳遞給DOM事件處理程序,除了event-object,這是由DOM規范定義的,有時你可以使用event data參數來blur jQuery方法。

試試這個:

jQuery(document).ready(function(){
    var defaultValue;
    jQuery("#nameInput, #emailInput, #webInput").focus(function(){      
        defaultValue = jQuery(this).val();
        jQuery(this).val("");
    })
    .blur(function(){   
        if(jQuery(this).val() == ""){
            jQuery(this).val(defaultValue);
        }
     }); 

 });

首先,您需要區分blur方法(函數)和handler (函數),它是blur的參數。 您試圖將defaultValue完全傳遞給處理程序,但是無法完成。 在內部處理程序中, defaultValue將等於eventObject ,因此你可以像console.log(defaultValue.timeStamp)那樣做smth,你會看到像123482359734536這樣的123482359734536

在你的方法中你甚至不能使用event.data參數blur因為它將在blur調用時設置(附加處理程序)。 您需要在兩個處理程序之外聲明一個var ,因此它們都可以看到

您可以考慮閱讀一些關於JS的綜合性書籍。

我讀了尼古拉斯扎卡斯的“專業JaveScript For Webdevelopers”。 有一個新版本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM