微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.focus()问题与JQUERY MOBILE?

我认为焦点事件不适用于 JQuery手机:这里是我的代码?你怎么看,谢谢你.
(当我删除对图书馆jquery手机的调用时,它的工作原理)
<!DOCTYPE html>
<html>
    <head>
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0b2/jquery.mobile-1.0b2.min.css" />
        <script src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
        <script src="http://code.jquery.com/mobile/1.0b2/jquery.mobile-1.0b2.min.js"></script>
    </head>
    <script type="text/javascript">
        $(document).ready(function() {
            $('#acceuil').live('pagecreate',function(event) {
                $('#declencher').click(function() {
                    $('#cache').focus();
                });
                $('#declencher').trigger('click');
            });
        });
    </script>
    <body>
        <div data-role="page" id ="acceuil" >
            <div data-role="header" data-theme="a" ><h3>aaa</h3></div>
            <div data-role="content">
                <input id="cache" type="input">    
                <input type="button" id="declencher" value="declencher">
            </div><!-- content-->
            <div data-role="footer" data-theme="a" data-position="fixed"><h3> Footer </h3></div>
        </div>
    </body>

</html>

解决方法

在JQM对DOM进行某些更改之前,pagecreate事件触发,所以我想重点丢失了.

尝试切换到页面显示,特别是因为您想要在每次用户访问页面时获得焦点.

如果它仍然不起作用(有这种情况)包装在超时中触发焦点的代码(是的,这是一个黑客:))

setTimeout(function(){
 $('#cache').focus();
},0);

这是一个黑客,但它不依赖于等待时间间隔. setTimeout()在给定的时间之后添加了渲染线程的队列(这是在浏览器中运行javascript和页面呈现)的函数.所以在这种情况下,这个函数会立即添加,所以在当前流程的JavaScript代码完成后运行.所以这是在事件处理程序结束后使一些代码运行的一种方法.所以这并不像人们所想的那么简单.我称之为黑客,因为它使用关于浏览器的工作原理的知识,并且掩盖了代码执行的流程.

我建议您阅读关于如何在单个线程中由同一个队列处理JavaScript执行和页面绘图.任何人使用超过20行的JavaScript.

我确信只有一个更好的解决方案 – 在jQuery Mobile框架本身修复它.

原文地址:https://www.jb51.cc/jquery/176667.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐