jQuery 追加,当我删除记录时视图变秃了
jQuery append, when I delete record view has changed baldy
我使用 append
列出了一些值
<div data-role="main" class="ui-content">
<h2 id="list-filter">Lista produktów z lodówki</h2>
<div data-demo-html="true">
<ul data-role="listview" id="produktList" data-filter="true" data-filter-placeholder="Search fruits..." data-inset="true">
</ul>
<div id="deleteButton"><input type="button" id="merge_button" value="Usuń"></div>
</div><!--/demo-html -->
</div>
和JS
function iterateOverLocalStorage() {
$('ul#produktList').html("");
for(var i=0; i < localStorage.length; i++)
{
console.log(localStorage.getItem(localStorage.key(i)));
$('ul#produktList').append("<li class='ui-li-static ui-body-inherit ui-first-child ui-last-child'>"+localStorage.getItem(localStorage.key(i))+"" +
"<span><input type='checkbox' id='check' name='produkty[]' value='"+i+"'></span></li>");
}
}
iterateOverLocalStorage();
看起来不错
当我单击 Usuń
按钮时,此操作删除了所选记录
$("#merge_button").click(function(event){
event.preventDefault();
var searchIDs = $("input:checkbox:checked").map(function(){
return this.value;
}).toArray(); // <----
console.log(searchIDs);
if(searchIDs.length == 0)
{
alert('Nic nie zaznaczyles');
}else {
for (var k in searchIDs) {
console.log("Element: " + k);
localStorage.removeItem(localStorage.key(k));
}
alert("Usunalem");
iterateOverLocalStorage();
}
});
视图变了,为什么?
这两个视图不同,因为第一个视图中的单选按钮是在文档加载时创建的,而第二个视图中的单选按钮是在稍后阶段创建的。
jQuery 移动版会在页面加载时增强文档,就在您插入初始的一组单选按钮之后。但是,当您在稍后阶段注入 HTML 时,这种增强不会自动发生;相反,您必须请求 jQuery Mobile 应用增强功能,例如使用 enhanceWithin
method.
要实现这一点,请更改:
$('ul#produktList').append(
"<li class='ui-li-static ui-body-inherit ui-first-child ui-last-child'>"
+localStorage.getItem(localStorage.key(i))+"" +
"<span><input type='checkbox' id='check' name='produkty[]' value='"
+i+"'></span></li>");
至:
$("<li class='ui-li-static ui-body-inherit ui-first-child ui-last-child'>"
+localStorage.getItem(localStorage.key(i)) +
"<span><input type='checkbox' id='check' name='produkty[]' value='"
+i+"'></span></li>").appendTo('ul#produktList').enhanceWithin();
此外,虽然不是真的有必要,但我建议在与点击场景相同的条件下添加初始单选按钮,在初始增强阶段之后添加它们。通过这种方式,它们以一致的方式添加,依赖于在这两种情况下使用上述代码触发的增强。
这你可以按如下方式进行。替换这一行(出现在任何函数之外的那一行):
iterateOverLocalStorage();
有了这个:
$(document).on("pagecreate",function(){
iterateOverLocalStorage();
});
请注意,当 jQuery 移动页面加载或转换时会触发多个事件。看看这张图片:
我使用 append
<div data-role="main" class="ui-content">
<h2 id="list-filter">Lista produktów z lodówki</h2>
<div data-demo-html="true">
<ul data-role="listview" id="produktList" data-filter="true" data-filter-placeholder="Search fruits..." data-inset="true">
</ul>
<div id="deleteButton"><input type="button" id="merge_button" value="Usuń"></div>
</div><!--/demo-html -->
</div>
和JS
function iterateOverLocalStorage() {
$('ul#produktList').html("");
for(var i=0; i < localStorage.length; i++)
{
console.log(localStorage.getItem(localStorage.key(i)));
$('ul#produktList').append("<li class='ui-li-static ui-body-inherit ui-first-child ui-last-child'>"+localStorage.getItem(localStorage.key(i))+"" +
"<span><input type='checkbox' id='check' name='produkty[]' value='"+i+"'></span></li>");
}
}
iterateOverLocalStorage();
看起来不错
当我单击 Usuń
按钮时,此操作删除了所选记录
$("#merge_button").click(function(event){
event.preventDefault();
var searchIDs = $("input:checkbox:checked").map(function(){
return this.value;
}).toArray(); // <----
console.log(searchIDs);
if(searchIDs.length == 0)
{
alert('Nic nie zaznaczyles');
}else {
for (var k in searchIDs) {
console.log("Element: " + k);
localStorage.removeItem(localStorage.key(k));
}
alert("Usunalem");
iterateOverLocalStorage();
}
});
视图变了,为什么?
这两个视图不同,因为第一个视图中的单选按钮是在文档加载时创建的,而第二个视图中的单选按钮是在稍后阶段创建的。
jQuery 移动版会在页面加载时增强文档,就在您插入初始的一组单选按钮之后。但是,当您在稍后阶段注入 HTML 时,这种增强不会自动发生;相反,您必须请求 jQuery Mobile 应用增强功能,例如使用 enhanceWithin
method.
要实现这一点,请更改:
$('ul#produktList').append(
"<li class='ui-li-static ui-body-inherit ui-first-child ui-last-child'>"
+localStorage.getItem(localStorage.key(i))+"" +
"<span><input type='checkbox' id='check' name='produkty[]' value='"
+i+"'></span></li>");
至:
$("<li class='ui-li-static ui-body-inherit ui-first-child ui-last-child'>"
+localStorage.getItem(localStorage.key(i)) +
"<span><input type='checkbox' id='check' name='produkty[]' value='"
+i+"'></span></li>").appendTo('ul#produktList').enhanceWithin();
此外,虽然不是真的有必要,但我建议在与点击场景相同的条件下添加初始单选按钮,在初始增强阶段之后添加它们。通过这种方式,它们以一致的方式添加,依赖于在这两种情况下使用上述代码触发的增强。
这你可以按如下方式进行。替换这一行(出现在任何函数之外的那一行):
iterateOverLocalStorage();
有了这个:
$(document).on("pagecreate",function(){
iterateOverLocalStorage();
});
请注意,当 jQuery 移动页面加载或转换时会触发多个事件。看看这张图片: