这是我试图理解和修改的某些代码......
基础知识是我试图获取一些XML并将其加载到自定义插件中。
我有以下内容(被点击的PHP页面采用dothis
属性并基于它进行切换,返回整数或实际的XML):
(function() {
var CountResult = function() {
var count = 0;
$.ajax({
async: false,
url: 'getstuff.php',
data: {dothis: 'countit'},
type: 'POST',
success: function(data) {
count = $(data).find('returned').text();
count = $.trim(count);
}
});
return count;
};
var LoadResult = function(stuff1, stuff2) {
$.post('getstuff.php',
{stuff1: 'one', stuff2: 'two', dothis: 'getit'},
function(data) {
//do stuff with returned data
}
);
};
$(function() {
$('#SomeDiv' ).myPlugin({
countMethod: CountResult,
loadRowsMethod: LoadResult
});
});
})();
我对此有一些疑问:
为什么顶部的匿名函数缺少jquery $?我希望看到(function($){}
而不是(function(){}
。如何使用底部$(function() {}
的常规jquery调用?任何人都可以解释一下吗?
传递给插件的方法点击了一个PHP页面,该页面返回有关XML文档的所需数据(PHP会对文档中的节点进行计数,将其返回到名为“返回”的节点中或返回节点本身,包含在“返回”节点中)。使用jQuery直接获取XML,绕过PHP页面不是更有效吗?我该怎么做?由于插件实际调用CountResult
和LoadResult
,我如何检索XML并将计数添加到插件选项countMethod
中,然后将XML本身插入loadRowsMethod
?但是插件需要函数,而不是普通的值。有没有最好的方法来做这种事情?
创建如下函数的目的是什么:
var Something = function(){}
而不是:
function Something(){}
答案 0 :(得分:1)
我遇到的主要问题是缺乏 直接在jQuery中加载XML 而不是通过PHP。我不能 看看如何做到这一点,得到结果 并将相关数据传递给 内部的两个私人职能部门 框架我来到这里。也许吧 是不是应该这样做?不 肯定的。
他们没有编码来做到这一点...他们被设计为自己获取数据...所以简而言之 - 你需要制作自己的函数来传递与硬编码的函数相同的东西插件(不包括您认为适合的更改 - 比如使用xml文件而不是php,或只加载xml文件一次而不是每次调用函数)。
$(function() {});
是$(document).ready(function(){})的缩写;
您只需要使用(function($){})(jQuery)
与jQuery.noConflict()兼容,并在插件代码中使用命名空间$ = jQuery。如果您不担心这一点并在全球范围内使用$
,那么如果你传入'$'就没有区别。承认与noConflict的比较在世界上是必须的,但它会以任何方式工作 - 直到你无论如何都需要noConflict。
就插件期望功能而言... jsut传递的匿名函数如:
$('#SomeDiv' ).myPlugin({
countMethod: function(){/*body*/},
loadRowsMethod: function(){/*body*/}
});
就你定义函数的方式而言......当你执行var myfunc = function(){};
时,这意味着函数只存在于创建函数的范围内(例如在执行它定义的函数时) - 而我相信定义像function myfunc()
这样的函数会使该函数成为全局函数(附加到窗口对象)。