Javascript 返回时,事件会重复
我有2个Javascript 返回时,事件会重复,javascript,jquery,jquery-mobile,Javascript,Jquery,Jquery Mobile,我有2个data role=“page”当您单击2页(div)的入口通行证时,第一个是从json文件形成的,并且有关于记录的更多信息 在第二节中,我返回了back 问题是,如果第一次单击它正常工作,它将返回一个包含所有记录的页面。第二次单击时,过程继续到块1,然后突然返回到块2,其中显示了详细信息 所有记录 $.getJSON('one.json', function(data, key) { var str = ""; $.each(data, fu
data role=“page”
当您单击2页(div)的入口通行证时,第一个是从json文件形成的,并且有关于记录的更多信息
在第二节中,我返回了back
问题是,如果第一次单击它正常工作,它将返回一个包含所有记录的页面。第二次单击时,过程继续到块1,然后突然返回到块2,其中显示了详细信息
所有记录
$.getJSON('one.json', function(data, key) {
var str = "";
$.each(data, function(key, data) {
str += "<div class='item' id='" + data.id + "' style='background: url(" + data.img + "/" + data.img + "); background-size: cover;'></div>";
});
$('#listlistbreakfast').html(str);
});
$.getJSON('one.json',函数(数据,键){
var str=“”;
$。每个(数据、功能(键、数据){
str+=”;
});
$('#listbreanch').html(str);
});
转到第二页
(document).on('tap', '.item', function(e) {
e.preventDefault();
var id = $(this).attr("id");
/*-----Плавный переход--------------------*/
$.mobile.pageContainer.pagecontainer("change", "mypage.html#recept", {transition: "fade"});
/*----------Формирование на другой странице-------------*/
$.getJSON(edaid+'.json', function(data, key) {
var thisstr = "";
$.each(data, function(key, data) {
if (data.id == id) {
thisstr += "<div class='personalimg' style='background: url("+data.img+"/" + data.img + "); background-size: cover;' >"+data.text+"</div>";
}
});
$('#json').html(thisstr);
});
});
(文档).on('tap','item',函数(e){
e、 预防默认值();
var id=$(this.attr(“id”);
/*-----Плавный переход--------------------*/
$.mobile.pageContainer.pageContainer(“change”、“mypage.html#recept”、{transition:“fade”});
/*----------Формирование на другой странице-------------*/
$.getJSON(edaid+'.json',函数(数据,键){
var thistr=“”;
$。每个(数据、功能(键、数据){
if(data.id==id){
thisstr+=“”+数据.文本+“”;
}
});
$('#json').html(thisstr);
});
});
我没有深入研究代码,但似乎每次进入详细信息页面时,都会在事件上重新创建。因此,每次单击该按钮时,它都会再次运行该函数。这就是为什么在你看来它每隔一段时间都“正确”工作的原因。因此,在细节页面的每一个偶数条目上,您都会得到“wierd”效果。
确保(文档)。在('tap','.item',函数(e){
只运行一次,它将得到解决。从您的问题中很难理解您的需要。如果我理解正确,您有一个显示列表的页面。该列表中的每个成员都可以单击并指向详细信息页面。一旦到了那里,您就有一个“返回”返回列表的按钮。问题是-当转到详细信息页面,然后返回列表,然后再次返回详细信息页面并单击“上一步”按钮时-它会转到列表页面,然后再次转到详细信息页面。我的回答正确吗?这不起作用,我尝试$(文档)。在('tap','back',函数(e){e.stopPropagation();$.mobile.back();});
但现在不是我拥有的事件back
`data rel=“back”'它正在工作。调试您的代码,并在您的语句上放置断点。
语句上。查看它们是否运行多次。在回调中放置调试点-查看它们在每次单击时是否运行多次。事件发生1次,但链接无法正常工作。我尝试$('body')。关闭('tap')。打开('tap','back',函数(事件){event.stopPropagation();$.mobile.back();console.log('1');})
在控制台中,我看到一条记录1
我发现问题,我从$(文档)中删除了所有代码