2011-07-21 72 views
3

有沒有辦法在jQuery中擴展val()函數。你可以在jQuery中擴展val()函數嗎?

基本上,我想要做的就是設置一個類變量,如果有內容被動態地輸入到輸入。

Whick通常會是這樣的

var thisVal = 'Hello World';  
$('#myInput').val(thisVal).addClass('dark'); 

這純粹是不錯告訴VAL()函數的類「黑暗」隨時添加到輸入,如果有一個值,將其刪除如果它是空的。

可能嗎?

回答

1
$.fn.darkVal = function (value) { return this.addClass('dark').val(value); }; 
1

可以做到這一點:

var oldVal = $.fn.val; 
$.fn.val = function(value) { 
    $(this).addClass("dark"); 
    return oldVal.apply(this, arguments); 
}; 

但我強烈建議您不要使用它,因爲設置元素值與設置CSS屬性無關。 val設置值,就是這樣。你可以做的是這樣的:

$("#someInput").change(function() { 
    if ($(this).text().length > 0) { 
     $(this).addClass("dark"); 
    } else { 
     $(this).removeClass("dark"); 
    } 
}); 

傳遞改變的函數將被調用,每當值被改變 - 編程或由用戶(see documentation)。通過這種方式,代碼變得更加易讀易懂,而且調試起來也更容易。

相關問題