jQuery.sides找不到同级
我维护的web系统有一个非常特殊的问题。在视图中,我想从DOM中的标签字段中获取问题编号。但是,我的代码无法找到label元素 这是脚本部分jQuery.sides找不到同级,jquery,asp.net,dom,Jquery,Asp.net,Dom,我维护的web系统有一个非常特殊的问题。在视图中,我想从DOM中的标签字段中获取问题编号。但是,我的代码无法找到label元素 这是脚本部分 $(document).ready(function () { $(function () { var result = $(".answer").click(function () { $(this).editable({
$(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
<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>
等等
如果我在chrome控制台中尝试这些组合,例如:$(“#answer1”).sibles().text()
,它可以完美地工作
有人知道为什么会这样吗?所有元素都应该像在document.ready()函数中一样呈现
提前谢谢
彼得
编辑:经过更多的调查,我注意到即使我使用var number=$(“questionNumber1”).text()代码>我只得到一个空字符串。问题可能与DOM没有完全加载有关。脚本块位于document.ready()
中,因此人们可能会猜测DOM已加载。可能此内部创建方法引用的不是$(“.answer”)
尝试备份,可能会有帮助:
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);
}
});
});
问题是create:函数正在另一个div中包装$(this)。因此,parent().parent()首先(“.number”)解决了这个问题
$(this).prev().text()
$(this).parent().children(".number").text()
$(this).parent().children().find(".number").text()
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);
}
});
});