JQuery 2.0中的closest方法及其上下文。

4
我认为将DOM元素作为上下文添加到jQuery方法中会将方法限制在该元素及其后代中而不是整个文档。如果是这样的话,为什么这样做:...
<!DOCTYPE html>
<html>
<head>
    <title>Example</title>
    <script src="jquery-2.0.2.js" type="text/javascript"></script>
    <link rel="stylesheet" type="text/css" href="styles.css"/>
    <script type="text/javascript">
        $(document).ready(function() {

            var contextElem = document.getElementById("row1");
            $("img").closest(".drow", contextElem).each(function(index, elem) {
                console.log("Context Element: " + elem.tagName + " " + elem.className
                            + " " + elem.id);
            });    

        });     
    </script>
</head>
<body>
    <h1>JQuery Closest Example</h1>
    <form method="post">
        <div id="oblock">        
            <div class="dtable">
                <div id="row1" class="drow">
                    <div class="dcell">
                        <img src="cell11.png"/><label for="cell11">Cell 1 1:</label>
                        <input name="cell11Value" value="0" required>
                    </div>
                    <div class="dcell">
                        <img src="cell12.png"/><label for="cell12">Cell 1 2:</label>
                        <input name="cell12Value" value="0" required >
                    </div>               
                </div>
                <div id="row2"class="drow">
                    <div class="dcell">
                        <img src="cell21.png"/><label for="cell21">Cell 2 1:</label>
                        <input name="cell21Value" value="0" required>
                    </div>
                    <div class="dcell">
                        <img src="cell22.png"/><label for="cell22">Cell 2 2:</label>
                        <input name="cell22Value" value="0" required >
                    </div>       
                </div>            
            </div>
        </div>
        <div id="buttonDiv"><button type="submit">Save</button></div>                    
    </form>
</body>
</html>
J

在控制台中显示如下结果:

上下文元素:DIV drow row2

而不是:

上下文元素:DIV drow row1

???


展示过程中发生的事情的Fiddle:http://jsfiddle.net/Pypy8/ - Kevin B
1个回答

1
传递上下文意味着jQuery会将您的选择器视为context的后代。在您的情况下,您的选择器和context是同一个元素。

没错...但它既不是row2,也不是row2的父级。那么row2是如何被选中的? - Kevin B
我同意,Kevin。从文档中确实无法直观地得知显示的行为是否符合预期。 - Adam Jenkins
所以我可以看到为什么行1没有显示,但似乎没有人能解释为什么行2会显示。为了增加乐趣,将上下文中的ID更改为row2,您将看到它显示行1。 - aspro
@aspro - 你实际上想要实现什么? - Adam Jenkins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接