jQuery Mobile 如何通过ajax方式动态加载页面?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jQuery Mobile 如何通过ajax方式动态加载页面?相关的知识,希望对你有一定的参考价值。
前台jQuery Moblie实现,现在我有一个页面需要动态生成,通ajax方式请求到后台数据后再生成该页面,现在一直没有解决,时间比较急,遇到过的朋友指点下,最好给一个例子。PS:百度分数虽然空了,不过还是先表示感谢了,高手,在线等你哦。
1.首先对于页面切换,使用changePage来执行,并且可以传递参数来确定是跳转到哪个页面当然,pagebeforechange事件也能获取到跳转文件的扩展名,不过还是觉得自己传参数靠谱
2.监听pagebeforechange事件,来处理页面切换之前处理,然后通过自己传的页面参数来判断,要跳转到的页面,然后根据自己需求来加载JS文件
3.动态加载JS文件,通过JQuery 的getScript方法来加载JS
(在监听事件的时候,可能考虑到,加载JS,后,导致内存增加
但是http://stackoverflow.com/questions/5108002/how-to-delete-script-loaded-by-getscript
上面写,getScript,不是相当于load了一个script,他是下载后来直接运行,所以不需要考虑这个问题,不过,这块还有待于确认)
优点
这样就避免了加载JS文件大又能捕捉到page页面的create 和 init事件以及处理其他的内容
而且可以把JS文件很明确的分到具体的文件中,也方便管理!追问
谢谢,继续等待Demo的出现。
参考技术A 1.首先对于页面切换,使用changePage来执行,并且可以传递参数来确定是跳转到哪个页面当然,pagebeforechange事件也能获取到跳转文件的扩展名,不过还是觉得自己传参数靠谱
2.监听pagebeforechange事件,来处理页面切换之前处理,然后通过自己传的页面参数来判断,要跳转到的页面,然后根据自己需求来加载JS文件
3.动态加载JS文件,通过JQuery 的getScript方法来加载JS.
优点 :
这样就避免了加载JS文件大又能捕捉到page页面的create 和 init事件以及处理其他的内容
而且可以把JS文件很明确的分到具体的文件中,方便管理.
如何删除tag from jQuery mobile loader?
我在我的页面上使用jQuery 1.4.5并在ajax请求之前使用加载器:
$.mobile.loading('show', {theme:"e", text:"", textonly:false, textVisible: false});
完成请求后,我隐藏它:
$.mobile.loading('hide');
这样可行,但它会在页面末尾生成一个标签,文本将位于该标签上。
<div class="ui-loader ui-corner-all ui-body-e ui-loader-default">
<span class="ui-icon-loading"></span>
<h1></h1>
</div>
由于第二个h1标签,一些SEO工具现在发出警告。
如何从加载程序中删除标记?
您可以使用jQuery remove
方法删除所需的元素。
$('.ui-loader').find('h1').remove();
来自jQuery documentation:
从DOM中删除匹配元素集。
与.empty()类似,.remove()方法从DOM中获取元素。如果要删除元素本身以及其中的所有内容,请使用.remove()。除了元素本身之外,还删除了与元素关联的所有绑定事件和jQuery数据。要删除元素而不删除数据和事件,请改用.detach()。
setTimeout(function(){
$("h1").remove();
}, 3000);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h1>H1 Heading</h1>
我总是对派对来说太晚了,但如果您需要自定义JQM加载程序,请注意,在您的问题中描述的选项附近,您还可以提供html
参数。
首先,您需要在JQM初始化期间设置您的自定义html
而不使用不需要的h1
标记:
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
<script>
$(document).on("mobileinit", function () {
/* jQuery Mobile initialization */
var html = "<div class='ui-loader'><span class='ui-icon-loading'></span></div>";
$.mobile.loader.prototype.defaultHtml = html;
// ... other settings as You need
$.mobile.loader.prototype.options.text = "";
$.mobile.loader.prototype.options.textVisible = false;
});
</script>
<script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.js"></script>
之后,您可以在没有任何文本消息的情况下显示loader
或 - 当您无论如何需要显示加载message
时 - 您可以进一步自定义它,始终使用html
选项:
var html = "<div class='ui-loader'><span class='ui-icon-loading'></span><h6>Wait...</h6></div>";
$.mobile.loading("option", "html", html);
$.mobile.loading("show");
Please note:
标准的textVisible
选项不再以这种方式工作,因为默认情况下JQM正在搜索加载器标记内不再存在的h1
标记。这应该在JQM源代码中修复,允许更灵活的配置,而无需对h1
标记进行硬编码:
1513 this.element.find( "h1" ).text( message );
以上是关于jQuery Mobile 如何通过ajax方式动态加载页面?的主要内容,如果未能解决你的问题,请参考以下文章
jQuery Mobile-jquery Mobile 怎么用ajax提交表单
jQuery mobile 中包含 ajax 时的函数执行顺序