我认为焦点事件不适用于
JQuery手机:这里是我的代码?你怎么看,谢谢你.
(当我删除对图书馆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框架本身修复它.