我编写了一个脚本,用于在点击时在div内部渲染文本(稍后是局部视图)。我检测div是否可见,如果没有,我在点击时添加文本并使div可见。这部分很完美。单击并且div可见时,我想删除已添加的内容,以便在我多次单击它时不会繁殖。
我得到警报 - 因此检测div可见性有效,但文本未被删除,如果我多次点击它会增加。
这是我的代码 - 你能告诉我我做错了吗?
<script language="javascript">
$(document).ready(function () {
$(".content").hide();
$(".heading").click(function () {
var id = $(this).attr("id");
var content = $(this).next(".content");
if (content.is(":hidden")) {
content.append("<p id='render-object'>Testing rendering on click</p>");
alert('Content is opening');
}
else if (content.is(":visible")) {
content.next("#render-object").remove();
alert('Content is closing');
}
content.slideToggle(100);
});
});
</script>
答案 0 :(得分:3)
删除时,您可能希望使用.find()而不是.next()。
答案 1 :(得分:1)
<script language="javascript">
$(document).ready(function () {
$(".content").hide();
$(".heading").click(function () {
var id = $(this).attr("id");
var content = $(this).next(".content");
if (content.is(":hidden")) {
content.html("<p id='render-object'>Testing rendering on click</p>");
alert('Content is opening');
}
else if (content.is(":visible")) {
content.find("#render-object").remove();
alert('Content is closing');
}
content.slideToggle(100);
});
});
</script>
修改: - 使用.find()
代替.next()
,因为render-object
是content
的孩子,而不是兄弟
答案 2 :(得分:0)
使用.find
代替.next
并使用.html
代替.append
<script language="javascript">
$(document).ready(function () {
$(".content").hide();
$(".heading").click(function () {
var id = $(this).attr("id");
var content = $(".content");
if (content.is(":hidden")) {
content.html("<p id='render-object'>Testing rendering on click</p>");
alert('Content is opening');
}
else if (content.is(":visible")) {
content.find("#render-object").remove();
alert('Content is closing');
}
content.slideToggle(100);
});
});
</script>