如何在不使用 Empty() 函数的情况下使用 jQuery 消除旧内容
How to eliminate old content with jQuery Without using Empty() function?
我正在尝试做一个填字游戏项目,我快到了。但我面临一个问题..
在我的 HTML 代码中,我有一个用于加载 .使用 Javascript 的 JSON 文件。
<form method="post" id="formulaire">
<div class="toto">
<select id="myselect" name="grille">
<option selected="selected">Choisir</option>
<option value="test1.json">test1</option>
<option value="test2.json">test2</option>
</select>
</form>
在我的脚本文件中,我已经声明了函数,最后我使用
(function ($) {
$(document).ready(function () {
$('#myselect').on('change', function (e) {
init($('#myselect').val()); /* This is a declared function already to draw the grid and the other things I wanna do and it works well.*/
});
});
}) (jQuery);
所以现在当我从列表中选择例如test1
时,网格加载得很好,一切都很好。但是当我选择test2
时,页面会损坏,我得到 2 个网格彼此内部,一切都变得更糟。
我想找到一种方法来正确地做我想做的事情,没有任何问题。这意味着当我重新选择另一个网格时,它会出现,而旧的网格不再存在。
我尝试在init(..)
调用后使用empty()
函数,但它清除了所有页面,并且无论第一个选择第二个,页面上都没有任何东西。
有什么想法吗?
**init() fonction
function init(link) {
$.getJSON(link, function (data) {
//set up the crossword
var puzzle = data.solution;
var cheat = 0;
$div = $('#container');
$("#author").append('<b>' + data.author + '</b>');
var start = Date.now();// for calculating the time purpose
// Creating the list of clues
for (i = 0; i < data.acrossClues.length; i++) {
if (data.acrossClues[i] != null) {
$(".listhorizontal").append('<li id="selects">' + data.acrossClues[i] + '</li>');
}
}
for (i = 0; i < data.downClues.length; i++) {
if (data.downClues[i] != null) {
$(".listvertical").append('<li id="selects">' + data.downClues[i] + '</li>');
}
}
// creating the grid
for (var i = 0; i < data.nRows; i++) {
for (var j = 0; j < data.nCols; j++) {
var $block = $('<div class="block" data="false" select="false" wordselect="false" cheat="false"><div class="outer"><div class="inner"></div></div></div>');
if (j == 0) $block.css('clear', 'both');
$div.append($block);
}
}
for (var row = 0; row < puzzle.length; row++) {
for (var col = 0; col < puzzle[row].length; col++) {
if (puzzle[row][col] != ".") {
addLetter(puzzle[row].charAt(col), row + 1, col + 1, 0);
}
}
}
./* + many functions for event handling.. */
});
};
你可以使用
.empty() 也可以使用 .html(),但关键是在需要清除的 HTML 元素上调用这些方法。如果你在 DOM 结构中太高的元素上调用它,你将清除太多的内容。 找到最接近您需要擦除的内容的包装器的元素,并在该元素上使用 empty() 或 html()。
看起来$div
是容器对象,因此请调用empty()
或html()
。
在 init 调用之前执行此操作,而不是在 AFTER 之后执行此操作,因为在 after 调用它将清除刚刚创建的任何 init。
相关文章:
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- 在不设置协议的情况下,使用javascript/jquery更改iframe-src
- jQuery悬停在没有鼠标悬停的情况下启动
- 有没有一种方法可以在没有文档或jQuery的情况下使用javascript解码html实体
- 在Widget代码中没有jQuery的情况下,用光标图像从左滑动到右
- 我如何让jQuery使用Greasemonkey 0.8脚本(在Firefox 2上),在没有互联网的情况下使用PC
- 在iframe的情况下,jQuery html()将失败
- 在我的情况下,使用带有变量失败的 jquery 选择器
- 为什么jQuery代码段在没有IFrame的情况下可以工作,而在有IFrame时却不能工作
- 如何在没有jquery的情况下使用Papa Parse
- 如何在不删除类似侦听器的情况下从父对象中删除jQuery事件侦听器
- 为什么jQuery悬停方法在这种情况下不起作用
- 如何在不链接/jquery的情况下使用方法应用css属性数组
- jQuery-如何在给定延迟的情况下从元素中删除类
- 为什么在这种情况下要向JQuery添加两个链接
- jQuery:如何在没有for循环的情况下将事件处理程序应用于$('#text'+'任意整数
- 在没有事件的情况下使用.jquery.on()
- 如何在不提交表单的情况下使用jQuery.validate
- 如何在没有jQuery的情况下模拟按名称命名的事件或解除单个事件的绑定