首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery.siblings找不到同级

jQuery.siblings找不到同级
EN

Stack Overflow用户
提问于 2012-10-24 17:31:15
回答 2查看 104关注 0票数 0

我正在维护的web系统有一个非常特殊的问题。在视图中,我想从DOM的标签字段中获取问题编号。但是,我的代码找不到label元素。

这是脚本部分。

代码语言:javascript
复制
$(document).ready(function () {
                $(function () {
                var result = $(".answer").click(function () {
                    $(this).editable({
                        className: "",
                        saveUrl: "../api/Results/SaveResults",
                        create: function () {
                            var number = $(this).siblings(".number").text();
                            console.log(number);
                            $(this).editable("option", "questionNumber", number);
                        }
                    });
                });
            });
        });

这是HTML

代码语言:javascript
复制
<div class="questionDiv">
                    <asp:Label ID="questionNumber1" runat="server" CssClass="number"></asp:Label>
                    <asp:TextBox ID="answer1" Wrap="True" runat="server" CssClass="answer" TextMode="MultiLine" Width="100%"
                            Rows="5" MaxLength="2000" Columns="65"></asp:TextBox>
                </div>

并在浏览器中呈现:

代码语言:javascript
复制
<span id="questionNumber1" class="number">1</span>
<textarea name="answer1" rows="5" cols="65" id="answer1" class="answer" style="width: 540px; "></textarea>

由于某些原因,create函数中的number变成了一个空字符串。使用$(this)的原因之一是因为每页有多个问题。在Page_Load()方法后面的代码中设置label.text

我已经尝试了许多不同的组合;

代码语言:javascript
复制
$(this).prev().text()

$(this).parent().children(".number").text()

$(this).parent().children().find(".number").text()

等。

如果我在chrome控制台中尝试这些组合,即。$("#answer1").siblings().text()它工作得很完美。

有谁知道为什么会发生这种情况吗?所有元素都应该像在document.ready()函数中一样呈现。

提前谢谢。

彼得

编辑:经过更多的调查,我注意到即使我使用var number = $("questionNumber1").text();,也只能得到一个空字符串。这个问题会不会与DOM没有完全加载有关。脚本块在document.ready()中,因此人们可能会猜测DOM已加载。

EN

回答 2

Stack Overflow用户

发布于 2012-10-24 17:34:47

也许create方法中的this引用的不是$(".answer")

尝试备份,可能会有所帮助:

代码语言:javascript
复制
var result = $(".answer").click(function() {
    var $this = $(this);
    $this.editable({
        className: "",
        saveUrl: "../api/Results/SaveResults",
        create: function() {
            var number = $this.siblings(".number").text();
            console.log(number);
            $this.editable("option", "questionNumber", number);
        }
    });
});
票数 0
EN

Stack Overflow用户

发布于 2012-10-25 15:23:02

问题是create:函数将$(this)包装在另一个div中。所以,parent().parent().first(".number")解决了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13046438

复制
相关文章

相似问题

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