すべての人に:ここStackOverflowのプロトコルを理解していない場合は申し訳ありません。私はすぐにコミュニティ内での自分の立場を正すよう努めます。そうは言っても:
何が呼ばれるかに応じて、jQuery関数のコンテキストを変更しようとしています。次のコードでは、ページが最初に読み込まれるときに、limitDates()関数が現在のコンテキストとしてHTMLElementDivを使用して呼び出されていることがわかります。入力フィールドに入力して呼び出すと、divではないことがわかりますが、$(this).closest('div')を使用して親divを取得しようとすると、divではなくHTMLElementInputが返されます。何かご意見は?
更新:フィドルを作成しました:http://jsfiddle.net/earachefl/XBFNQ/8/
<script type="text/javascript" src="common/js/jquery-1.5.2.min.js"></script>
<script type="text/javascript" src="common/js/jquery-ui-1.8.12.custom.min.js" ></script>
<div class="datemodule">
<input class="date_from" type="text" id="date_from_#name#" name="date_from" value=#start#>
</div>
<script>
$(document).ready(function(){
$('div.datemodule').limitDates();
$('.date_from').keydown(function(){
$(this).limitDates();
});
});
(function($){
$.fn.limitDates = function(){
return this.each(function(){
context = $(this).context;
//alert(context);
alert(context.nodeName);
if (context.nodeName != 'DIV'){
alert('not a div');
newContext = $(this).closest('div').context;
alert(newContext.nodeName);
}
});
};
})(jQuery);
</script>