問題点
setTimeoutは、一定時間後に渡された関数を実行する関数です。
今回、このsetTimeoutに渡した関数内でjQueryの$(this)
を使ったらエラーになりました。
Uncaught TypeError: Cannot call method 'toLowerCase' of undefined
解決方法
$.proxy
をかませば問題なく動作しました。
javascript
$("#bar").click(function(){
setTimeout($.proxy(function(){
$("#foo").load('/foo/bar', {value: $(this).val()});
}, this), 1000);
});
$.proxyメソッドは、渡された関数内のthisを第二引数にすることができるというものです。