Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态更新div元素的内容需要两到三次尝试_Javascript_Jquery_Jquery Mobile - Fatal编程技术网

Javascript 动态更新div元素的内容需要两到三次尝试

Javascript 动态更新div元素的内容需要两到三次尝试,javascript,jquery,jquery-mobile,Javascript,Jquery,Jquery Mobile,我正在尝试更新div的内容,但它并不总是有效。我不确定这是否与我的问题有关,但我正在使用jquery mobile 背景: 我有一个选择菜单,用于选择位置。我还有一个按钮,用于获取所选位置的信息。Ajax用于获取数据,数据显示在我的页面上的div元素中。我发现我需要单击按钮两次才能更新div元素。奇怪的是,如果我在更新div之前添加了一个警报,它可以正常工作(即,我只需要按下一次按钮) 代码: 我最初是用我的Android EVO发现这个问题的,但我刚刚尝试了firefox,它也发生了 我怀疑这

我正在尝试更新div的内容,但它并不总是有效。我不确定这是否与我的问题有关,但我正在使用jquery mobile

背景:

我有一个选择菜单,用于选择位置。我还有一个按钮,用于获取所选位置的信息。Ajax用于获取数据,数据显示在我的页面上的div元素中。我发现我需要单击按钮两次才能更新div元素。奇怪的是,如果我在更新div之前添加了一个警报,它可以正常工作(即,我只需要按下一次按钮)

代码:

我最初是用我的Android EVO发现这个问题的,但我刚刚尝试了firefox,它也发生了

我怀疑这与.html()由于某种原因不能正常工作有关

有什么想法吗

谢谢

试试看:

$("#page_id_name").page();
但我也认为Beta 2更新中有一种新方法:

新建“创建”事件:一次轻松增强所有小部件

虽然页面插件不再专门调用每个插件,但是 是否发送一个“pagecreate”事件,大多数小部件都使用它来 自动初始化自己。只要小部件插件脚本是 引用,它将自动增强小部件的任何实例 它会在页面上找到,就像以前一样。例如,如果选择菜单 插件加载后,它将增强它在新插件中找到的任何选择 创建页面

这个结构现在允许我们添加一个新的创建事件,可以 在任何元素上触发,节省手动初始化的任务 该元素中包含的每个插件。直到现在,如果一个开发者 通过Ajax或动态生成的标记加载内容,它们 需要手动初始化所有包含的插件(listview按钮, 选择等)以增强标记中的小部件

现在,我们方便的创建事件将初始化所有必要的插件 在该标记中,就像页面创建增强 过程有效。如果要使用Ajax加载HTML块 标记(比如登录表单),您可以触发自动创建 转换它包含的所有窗口小部件(此窗口中的输入和按钮 案例)转换为增强版本。此场景的代码为:

因此,如果您更新到Beta 2,请尝试以下方法(未经测试):


作为一个实验,我刚刚更新了click处理程序,不使用ajax,而是直接更新div(我使用了一个计数器,当数字为奇数时显示“奇”,当数字为偶数时显示“偶”),每次都非常有效。我现在很困惑。我知道ajax正在工作,因为我在onError和onSuccessWeather处理程序中有警报。有什么想法吗?
#weatherSummary
元素始终存在,还是在某个时候生成的?我怀疑与未及时加载的东西有关。尝试在Firefox中检查JavaScript错误日志。这是个好主意。我直接在html中声明它,所以我希望它存在,但也许它不存在。顺便说一下,我刚刚调整了onSuccessWeather,将alert()放在.html(数据)之后,事情总是像这样正常工作。我将检查错误日志。谢谢。我没有看到任何javascript错误,但我确实看到了一些有趣的东西。我在javascript控制台中观察了Post和响应。帖子总是正确的,但有时回复没有更新(每次按下按钮,我都会得到不同的回复)。可能weather.php脚本有错误,并且返回了过时的数据,但我认为情况并非如此,因为如果我添加一个alert(),它总是有效的。jquerymobile的东西是否可能以某种方式阻止或破坏实际响应?谢谢Phil。我正在使用Beta 2。刚刚尝试了$(“#weatherSummary”).html(data.trigger(“create”);但它不起作用。我还试过$(“#weather”).page();没有成功。我只是在$(“#weatherSummary”).html(数据)附近添加了一个5秒的setTimeout作为一个实验,而问题从未发生过。在尝试setTimeout()之前,我正在使用firefox控制台查看XMLHttpRequests。帖子看起来总是很好,但只要出现问题,响应中就有过时的数据。我不明白为什么使用setTimeout会影响firefox作为响应数据显示的内容,这当然会影响div中显示的内容。伙计们,我不明白这一点,但问题似乎是我正在weather.php脚本中进行缓存。我禁用了它,现在一切正常。javascript警报和超时是如何实现这一点的,这一点毫无意义。我得挖迪珀把这一切整理好。如果可以,我会删除这篇文章,因为我不想浪费任何人的时间。
$("#page_id_name").page();
$( ...new markup that contains widgets... ).appendTo( ".ui-page" ).trigger( "create" );
$("#weatherSummary").html(data).trigger( "create" );