2011-10-05 75 views
1

我有一个jQuery在.load()函数后丢失的问题。 我有一个用jQuery UI构建的元素。问题是,当我从单独的页面加载它是这样的:jquery ui在jQuery加载后丢失

$("#mydiv").load("getgroup.php?group=" + selectedGroup).html(); 

的getgroup.php产生这样的事情,这取决于GET参数:

<select> 
<option>something</option> 
<option>something</option> 
</select> 

当负载加载它() (或交的,阿贾克斯,拿到)的元素返回未格式化......我曾尝试包括jQuery和jQuery的UI插件也在getgroup.php文件,但没有运气...

谢谢

回答

0

问题是,你的jQuery代码不会自动执行动态加载的元素。

你应该做的是把所有的jQuery UI代码放入一个函数中。举例来说,假设你想呼吁新加载的提交元素button() jQuery UI的功能:

function launchUiWidgets(target) { 
    $(target).find('input:submit').button(); 
} 

然后,您可以使用该功能作为成功回调当您加载新的元素 - 给它target作为参数以避免重新运行您的所有DOM上的代码。让我们假设您加载ID的div的“容器”的数据:

$.get(
    "whatever.html?name=val", 
    function(data){ 
     $('#container').html(data); 
     launchUiWidgets('#container'); 
    }, 
    "html"); 
+0

谢谢,这个例子帮助我解决了这个问题 – user980145

0

如果我的理解是正确的,并且正在插入元素,但没有CSS,则可能需要在元素加载后运行.addClass,以在元素存在时应用所选的CSS类。但是,如果在您的CSS中预设了元素类型的默认值,例如select{color:#000000;width:...这些也应该自动加载。

每注释如下─如果你正在寻找你的预定义的处理程序仍然相关)通过AJAX注入的内容/负载(调用,您可以使用.live()方法:

http://api.jquery.com/live/

+0

我认为这个问题更多的是与jQueryUI的功能没有被应用在动态加载的标记。 – cbrandolino

+0

在这种情况下,提问者可以使用live()方法:http://api.jquery.com/live/ – SW4

+0

不是真的,因为它不会关于听众。看看下面的答案。 – cbrandolino