Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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
jQuery选项卡和Ajax-如何设置页面?_Jquery_Jquery Ui_Jquery Ui Tabs - Fatal编程技术网

jQuery选项卡和Ajax-如何设置页面?

jQuery选项卡和Ajax-如何设置页面?,jquery,jquery-ui,jquery-ui-tabs,Jquery,Jquery Ui,Jquery Ui Tabs,我已经开始使用jQuery的UI选项卡,它们在大多数情况下工作得很好,但我遇到了一些问题。当我在选项卡之间来回切换时,当我返回到该选项卡时,某些项目上的功能将丢失。这让我怀疑我是否正确地构建了这一切。谷歌搜索什么也没找到,所以我决定在这里提问 所以问题是:如果我有通过Tabs+AJAX拉入的页面,而这些新页面有我想使用jQuery的功能,那么我应该将jQuery放在哪里?我现在的结构如下: 带有选项卡的页面:main_Page.php 该页面上有两个选项卡:一个通过AJAX拉入“page1.ph

我已经开始使用jQuery的UI选项卡,它们在大多数情况下工作得很好,但我遇到了一些问题。当我在选项卡之间来回切换时,当我返回到该选项卡时,某些项目上的功能将丢失。这让我怀疑我是否正确地构建了这一切。谷歌搜索什么也没找到,所以我决定在这里提问

所以问题是:如果我有通过Tabs+AJAX拉入的页面,而这些新页面有我想使用jQuery的功能,那么我应该将jQuery放在哪里?我现在的结构如下:

带有选项卡的页面:main_Page.php 该页面上有两个选项卡:一个通过AJAX拉入“page1.php”,另一个拉入“page2.php”

page1有自己的元素,然后我使用jQuery。jQuery代码到哪里去了?它是在main_page.php上还是在page1.php上


现在我把它放在第1页上,我认为这是正确的,但这也产生了其他问题,所以我只想再次检查一下,看看这是否正确。

请将所有javascript放在一个单独的.js文件中。单独的数据(html)、表示(css)和行为(javascript、flash…)。它将简化应用程序的维护和扩展。你和其他人可能有一天不得不维护它

至于你的问题:由于你切换了标签,新加载的内容不会有任何附加行为。为什么?当您第一次加载页面并加载javascript时,它将只应用于DOM的当前状态(如果您愿意,可以使用html结构)。当您单击另一个选项卡时,您将通过ajax加载内容,因此页面将不会刷新,这意味着:这个新内容将不会应用javascript,因为当javascript启动时它不可用。因此,您有两种选择:

  • 将该javascript与加载的html一起注入(在它之后)。这是一个坏习惯,但它是有效的
  • 您可以使用函数绑定事件。这是正确的选择
使用live(),行为将始终附加到DOM元素

所以不是

$('#myel').bind('click',dothis());
是吗

$('#myel').live('click',dothis());

这样,无论显示哪个选项卡,其内容都将绑定到函数,而无需重新附加它。

因此,您是说我应该将所有jQuery作为单独的JS文件包含,但由main_page.php拉入,然后确保所有jQuery都使用Live?确切地说:通过ajax加载的所有元素都应该使用Live()而不是bind()(或者“click()”和其他快捷方式)。