首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery closest()问题

jQuery closest()问题
EN

Stack Overflow用户
提问于 2011-07-20 22:32:40
回答 2查看 608关注 0票数 2

致所有人:如果我没有理解StackOverflow的协议,很抱歉。我会立即努力纠正我在社区中的地位。话虽如此:

我正在尝试更改jQuery函数的上下文,这取决于调用它的内容。在下面的代码中,当页面第一次加载时,我们看到调用limitDates()函数时使用了HTMLElementDiv作为当前上下文。当我们通过在输入字段中输入来调用它时,我们看到它不是一个div,但是尝试使用$(This) div (‘.closest’)获取父div会返回一个HTMLElementInput,而不是div。有什么想法吗?

更新:创建了一个小提琴:http://jsfiddle.net/earachefl/XBFNQ/8/

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-20 23:00:53

Context是传递给JQuery()的DOM元素。因此,您的选择器首先将上下文和文档放在一起。

代码语言:javascript
复制
$('div.datemodule').limitDates(); // context is the document
$('.date_from').keydown(...   // context is the document

当涉及到回调时,如果你使用$(this),context就是触发事件的元素。

代码语言:javascript
复制
$('.date_from').keydown(function(){
    $(this).limitDates();         // context is the element which has class .date_form and triggered that event
}); 

当涉及到使用this.each的函数时,会在每次迭代中为每个元素设置上下文。

代码语言:javascript
复制
return this.each(function(){
    $(this).context; // context is the element of iteration
}

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

票数 2
EN

Stack Overflow用户

发布于 2011-07-20 23:04:44

context的描述如下:

最初传递给jQuery()的DOM节点上下文;

因此,即使在调用closest之后,上下文仍然是传递给jQuery的原始input

如果你想要div,为什么不直接买呢?

代码语言:javascript
复制
newContext = $(this).closest('div')[0];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6763573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档