现在我正在为WordPress创建一些插件。所有这些都需要单独工作,但我想添加一个实现来让它们协同工作。
对于初学者,所有脚本都将使用自定义名称来引用jQuery,这是我的问题开始的第一部分。在WordPress中,我有一个组合对象,我想用所有值填充。组合对象的名称为:myObject
。
现在我尝试这个但它不起作用:
if( typeof myObject.jq !== 'undefined' )
myObject.jq = jQuery.noConflict();
myObject.jq(document).ready(function(){
}
我收到错误消息'myObject.jq'不是函数。
我想通过组合的ajax函数进一步扩展它,就像这样
if( typeof myObject.jq !== 'undefined' ){
myObject.jq = jQuery.noConflict();
myObject.ajaxcall = function(action){
var dfr = myObject.jq.Deferred();
myObject.jq.ajax({
url:myObject.ajaxurl,
type:'post',
data:{
action:action,
face:myObject.face
},
dataType:'json',
success:dfr.resolve
});
return dfr.promise();
};
}
myObject.jq(document).ready(function(){
// My code here
}
这完全不起作用。任何人都知道如何让这个工作?
答案 0 :(得分:0)
你只有向后的“未定义”逻辑。你应该说typeof myObject.jq === 'undefined'
。虽然,由于预期jq
是一个函数,因此更好的检查将是typeof myObject.jq !== 'function'
。
答案 1 :(得分:0)
首先要开始工作,您需要将myObject
声明为object
。并且javaScript将自动分配未定义的对象标识符,因此您无需测试密钥是否存在。因此,将代码更改为以下内容将起作用:
var myObject = {};
myObject.jq = jQuery.noConflict();
myObject.ajaxcall = function(action) {
//You function code
};
myObject.jq(document).ready(function(){
//Your code goes here
});
这将导致以下myObject
myObject
ajaxcall: function (action) { }
jq: function (a,b){return new d.fn.init(a,b,g)}