我有一些像这样的html:
<div id="1">
<p>
Volume = <input type="text" />
<button rel="3.93e-6" class="1" type="button">Check answer</button>
</p>
<div></div>
</div>
还有一些类似这样的JS:
$("button").click(function () {
var buttonNo = $(this).attr('class');
var correct = Number($(this).attr('rel'));
validate (Number($("#"+buttonNo+" input").val()),correct);
$("#"+buttonNo+" div").html(feedback);
});
我真正想要的是如果我不需要在按钮上有class="1“(我知道数字类是无效的,但这是一个WIP!),这样我就可以根据父buttonNo的id来确定div了。在现实生活中,有多个部分看起来像这样。
发布于 2009-02-13 14:10:17
您可以在父div上使用event delegation。或者使用closest方法查找按钮的父级。
两者中最简单的可能是最接近的。
var id = $("button").closest("div").prop("id");
发布于 2009-02-13 13:51:40
1.
$(this).parent().attr("id");
2.
肯定有很多种方法!一种可能是隐藏包含答案的元素,例如
<div>
Volume = <input type="text" />
<button type="button">Check answer</button>
<span style="display: hidden">3.93e-6</span>
<div></div>
</div>
然后使用类似于上面的jQuery代码来获取它:
$("button").click(function ()
{
var correct = Number($(this).parent().children("span").text());
validate ($(this).siblings("input").val(),correct);
$(this).siblings("div").html(feedback);
});
请记住,如果你把答案放在客户端代码中,他们就会看到它:)最好的方法是在服务器端验证它,但对于范围有限的应用程序来说,这可能不是问题。
发布于 2009-02-13 13:51:28
试试这个:
$("button").click(function () {
$(this).parents("div:first").html(...);
});
https://stackoverflow.com/questions/545978
复制相似问题