[英]how to access to “$(this)” object from event handler passed to “on” method?
當事件處理程序設置一個非匿名函數時,然后通過訪問$(this)
對象發生錯誤。
function TextBoxChangeEventHandler(id)
{
var value = $(this).val();
//...do something
}
$("#object_position :input[type='text']")
.on("change", function(){TextBoxChangeEventHandler("id");});
//other some object set TextBoxChangeEventHandler...
錯誤日志:
未捕獲的TypeError:無法讀取未定義的屬性“ toLowerCase”
的jquery-2.1.1.min.js:4
有解決方法嗎?
嘗試
function TextBoxChangeEventHandler(elem)
{
var value = $(elem).val();
//...do something
}
$("#object_position :input[type='text']")
.on("change", function(){TextBoxChangeEventHandler(this);});
您可以使用.call()傳遞自定義執行上下文
function TextBoxChangeEventHandler() {
var value = $(this).val();
//...do something
}
$("#object_position :input[type='text']").on("change", function () {
TextBoxChangeEventHandler.call(this);
//with the update
TextBoxChangeEventHandler.call(this, 'id');
});
通過引用傳遞TextBoxChangeEventHandler
函數。
$("#object_position :input[type='text']").on("change", TextBoxChangeEventHandler);
您可以將對TextBoxChangeEventHandler
的引用傳遞給您的方法。 例如
$("#object_position :input[type='text']").on("change", TextBoxChangeEventHandler);
您可以為此使用jQuery代理-
$("#object_position :input[type='text']")
.on("change", $.proxy(TextBoxChangeEventHandler("id"),this));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.