2011-10-25 42 views
1

我使用的jQuery插件,均匀的,所以,我的形式,我可以有漂亮的单选按钮,并输入文件等jQuery的生活()和插件

不过,我已经打了我的形式问题很多一拉通过阿贾克斯,并明确插件工作,它需要知道元素存在于dom中。

有没有去使用插件与阿贾克斯的方法呢?

目前我想,

$(".uniform input").live().uniform();

这显然是行不通的,有什么建议?

--- IMPLENTED在负荷回调-----

$('#upload').click(function(e) { 
     $("#content #main").animate({"right": "-900px"}, 'slow', 'linear', function(){ 
      $(this).load('upload.html #main div', '', function(){ 
       $(".uploader input").uniform(); 
      }); 
     }); 
     $("#main").animate({"right": "0px"}, 'slow', 'swing'); 
     e.preventDefault(); 
    }); 
+0

您需要修改插件。 – SLaks

+0

我建议应用插件到新的形式之前,/他们被附加到Ajax调用的成功方法中的DOM之后。 .live()只能处理对用户交互做出反应的插件,例如点击或焦点,但对于在初始化时会导致样式更改的插件,它效果不佳。 –

+0

@KevinB所以用ajax的回调? – Udders

回答

1

回应评论:

.load无非是$.ajax电话裹在另一种方法了。它也有回调。

$(target).load("myurl.php",function(){ 
    $("select").uniform(); 
}); 

编辑:我刚才看到您的编辑。如果这不起作用,请确保您使用的是正确的选择器来访问要应用插件的元素。

1

只是初始化再次均匀您在表单中已经添加,使用正常

$('#forms').append(new_selects_from_ajax); 
$("select").uniform(); 
+0

不工作,我没有使用追加,我使用负载 – Udders

+1

所以做回调。 – Blazemonger

+0

我相信这是我在做什么看到我的编辑请 – Udders

0

你能后使用livequery plugin,如下所示:

$('.uniform input').livequery(function(){ 
    $(this).uniform(); 
}); 
+0

livequery已经完全集成到使用'.live'的jQuery中,或者我想。 – Blazemonger

+0

不完全,livequery有一件jQuery没有的东西;检测添加到dom中的新元素。但是,从我读过的内容来看,这个功能并不是非常有效。所有'.live'和'.delegate'都是委托事件绑定。 –

+0

@ mblase75:根据来自[API页面](http://api.jquery.com/live/)的文档...:“描述:为所有匹配的元素添加一个处理程序到**事件**当前选择,现在和将来。“ –