jQuery()问题

jQuery()问题,jquery,closest,Jquery,Closest,对所有人:对不起,如果我不理解StackOverflow的协议。我将立即努力纠正我在社区中的地位。尽管如此: 我试图根据调用jQuery函数的内容来更改它的上下文。在下面的代码中,当页面第一次加载时,我们看到limitDates()函数是用HTMLElementDiv作为当前上下文调用的。当我们通过在输入字段中键入来调用它时,我们看到它不是一个div,而是试图使用$(this)获取父div。最近('div')返回一个HTMLElementInput,而不是div。有什么想法吗 更新:已创建小提琴

对所有人:对不起,如果我不理解StackOverflow的协议。我将立即努力纠正我在社区中的地位。尽管如此:

我试图根据调用jQuery函数的内容来更改它的上下文。在下面的代码中,当页面第一次加载时,我们看到limitDates()函数是用HTMLElementDiv作为当前上下文调用的。当我们通过在输入字段中键入来调用它时,我们看到它不是一个div,而是试图使用$(this)获取父div。最近('div')返回一个HTMLElementInput,而不是div。有什么想法吗

更新:已创建小提琴:


$(文档).ready(函数(){
$('div.datemodule').limitDates();
$('.date_from').keydown(函数(){
$(this.limitDates();
});
});
(函数($){
$.fn.limitDates=函数(){
返回此值。每个(函数(){
context=$(this.context);
//警报(上下文);
警报(context.nodeName);
if(context.nodeName!=“DIV”){
警报(“非div”);
newContext=$(this).closest('div').context;
警报(newContext.nodeName);
}
});
};
})(jQuery);

上下文是传递给JQuery()的DOM元素。因此,您的选择器首先将上下文和文档都作为文档

$('div.datemodule').limitDates(); // context is the document
$('.date_from').keydown(...   // context is the document
当涉及回调时,如果使用$(this),则上下文是触发事件的元素

$('.date_from').keydown(function(){
    $(this).limitDates();         // context is the element which has class .date_form and triggered that event
}); 
当涉及到你的函数时,你在哪里使用它。每次迭代中,上下文都被设置为每个元素

return this.each(function(){
    $(this).context; // context is the element of iteration
}

正如我所说,上下文是传递给JQuery的内容,可能是只读的。

上下文的描述是:

因此,即使在调用了
最近的
之后,上下文仍然是传递给
jQuery
的原始
输入

如果您想获取
div
,为什么不直接获取它呢

newContext = $(this).closest('div')[0];

为了给你一个想法,我打开问题,看到0%,然后立即停止阅读。当我完成这项工作后,我将点击返回主页,不再考虑这个问题。对不起,伙计们,我不理解这里的协议。我会努力做一个更好的公民。干杯因此,如果我们从$('.date_from').keydown调用,上下文是具有class.date_from的元素,并且在使用该.each的函数中,只有一个迭代元素,即具有class.date_from的元素。对吗?如果是这样的话,那么为什么$(this.nexist('div')不返回父div呢?现在我真的很困惑,kingjiv。当我使用输入元素调用函数时,上下文就是那个元素,明白了。因此$(this)是该输入元素周围的jQuery包装器,对吗?因此,调用$(this.nexist('div')应该返回父div,对吗?nvm,我想我终于得到了它。谢谢我试过了。。。但是在我的小提琴中,$(this.nexist('div')返回一个输入元素,而不是父div。您得到了不同的结果吗
$(this).closest('div')
返回一个
div
,您正在执行
$(this).closest('div').context
,这是一个输入。哦。。。那么所有返回的元素的上下文都是相同的?现在我明白了。哦。
The DOM node context originally passed to jQuery();
newContext = $(this).closest('div')[0];