我一直在嘗試做這個好幾個小時,而且它一直沒有工作。我找不到原因。如何讓jquery使用命名函數
我的HTML:
<label>
Description<br>
(<span id='fieldLength'>0</span> Chars. ±1):
<textarea name='dataDescr' id='metaDescr'>Some Text Here.</textarea>
</label>
我有什麼說不工作。它不給我任何迴應,在螢火沒有控制檯錯誤或任何形式的反饋:
JQuery的:
counterChecker = function() {
var max = 800;
var lengthVal = $('#metaDescr').val().length;
var fl = $('#fieldLength');
if (lengthVal >= max) {
var char = lengthVal - max;
fl.text('Over by ' + char);
}
else {
fl.text(lengthVal);
}
}
$(document).ready(function() {
$('#metaDescr').on("change", counterChecker());
});
編輯:這也不會,如果函數工作在 文件準備好的括號內。
但是DOES的工作是相同的代碼直接插入on change
功能匿名函數:
$(document).ready(function() {
$('#metaDescr').on("change", function() {
var max = 800;
var lengthTwo = $(this).val().length;
var lf = $('#fieldLength');
if (lengthTwo >= max) {
var char = lengthTwo - max;
lf.text('Over by ' + char);
}
else {
lf.text(lengthTwo);
}
});
});
有人可以幫助我瞭解爲什麼這種差異?
它爲什麼不作爲一個單獨的被調用的函數工作,但沒有給我的螢火蟲任何錯誤,但它可以作爲直接引用(匿名?)函數。我如何使它的行爲像預期的那樣,但將代碼保存在一個獨立的自包含的功能單元中。
我使用jQuery 1.11.3。在過去的幾個小時觀看many計算器posts沒有顯示出光: -/
這是行得通的,謝謝!我不敢相信我幾個小時都在圍繞這一切,而這只是一對空括號。 Grrrr。 – Martin
不要打敗自己,這是一個很難調試的常見錯誤。你會看到它很多關於setTimeout&setInterval。 –
我懷疑它使用了很多PHP,它的功能是通過括號跟着定義的。也沒有括號,我認爲JavaScript/JQuery要求'var'iable – Martin