【发布时间】:2011-02-20 21:00:49
【问题描述】:
我是 JQ 的新手,所以任何关于这方面的帮助表示赞赏,剩下的颅卵泡很少受到创伤......
我有一个简单的 jQuery 插件,它使用 Ajax 使用 AppendTo 填充带有结果(作为一系列 )的#selector (UL)。这是一个跨域调用,所以据我所知,只支持 asych:true。
插件可以工作,但我需要允许用户使用任意函数(即由插件用户确定的函数,如 $(".foo").draggable() 或其他)并在外部执行它该插件不起作用,因为我们是跨域和异步的。
我想我需要在运行时将任意函数传递给插件,但这是我能做到的。我已经摆弄了 delegate()/trigger() 和 bind(namespcae.bar) 但到目前为止还没有成功......
应该如何处理?
调用如下所示:
$(document).ready(
function () {
$('#targetDiv').myPlugin({ count: 10});
//$(".foo").draggable(); // does not work, because we are async.
});
插件如下所示:
(function ($) {
$.fn.myPlugin = function (options) {
$.ajaxSetup({ cache: true, async: false }); // false doesn't work - cross domain
var defaults = {count: 5};
var options = $.extend(defaults, options);
return this.each(function () {
var obj = $(this);
$.ajax({
type: 'GET',
async: false,
dataType: 'json',
data: {},
url: 'http://someurl.com?callback=?&otherstuff=somedata',
success: function (data) {
$.each(data.results, function (i, item){
t = $(<LI class='foo'> + item.text </LI>').appendTo(obj);
// this works but may need any arbitrary jQuery.ui function
//t = $(item.text).appendTo(obj).draggable();
// maybe this but not sure how it should be done
//$(t).trigger(ArbitraryEventHandler); ???
【问题讨论】:
标签: jquery ajax function plugins asynchronous