运行 来自 JS 的 jquery 函数
Running a jquery function from JS
抱歉这个菜鸟问题,但今天对我没有用。
我正在创建一个 Phonegap
应用程序并将 PushWoosh API 集成到我的应用程序中。在收到推送通知时,我想再次 运行 我以前的功能,因此数据将被更新。
Pushwoosh 有这样的 JS 功能:
document.addEventListener('push-notification',
function(event) {
var title = event.notification.title;
var userData = event.notification.userdata;
var notification = event.notification;
if (typeof(userData) != "undefined") {
console.warn('user data: ' + JSON.stringify(userData));
}
var object = JSON.parse(notification.u);
window.runPushFunctions(object.active, object.open); //Runs a jQuery function I have created..
}
);
现在 window.runPushFunctions
看起来像这样:
$(document).ready(function() {
window.runPushFunctions = function(active, open) {
if (active != null || active != undefined) {
$('.hubs-page').removeClass('hubs-active').hide().eq(active).show().addClass('hubs-active');
}
if (open == 2) {
$('html').addClass('hubs-opening');
}
//Trying to run functions from jQuery file that will get data from database and so on..
received();
sent();
checkFriends();
};
});
但由于某些原因我不能 运行 received()
、sent()
、checkFriends()
。
这些函数在它们自己的文件中是这样设置的:
(function($) {
'use strict';
function checkFriends () {
$.getJSON('url',function(data){
$.each(data,function(index,value){
//Do something with value
});
});
}
我按以下顺序包括文件:
file.js -> received(); sent();
file.js -> checkFriends();
file.js -> pushnotifications
任何帮助将不胜感激
我不确定我是否理解你的问题,但在我看来你正在函数范围内定义函数 checkFriends。如果您需要访问该函数定义,则需要在可以从全局范围引用的对象上声明它。显然,最简单的方法是将其附加到 window,尽管有很多理由不这样做。
window.checkFriends = function(){//code that does stuff};
正如这里的另一个答案所说,您正在确定方法定义的范围,因此在包含方法之外的任何地方都无法访问它们。
(function($) {
这是一个方法定义。无法在其外部访问在其中非全局声明的任何变量或函数。因此,您需要在其他地方定义函数或将它们设为全局函数以便访问它们。
如果您要在其他地方定义它们,只需将函数定义移动到同一文件的顶部,在 (function($) {})()
范围之外。
如果您改用全局定义,则需要稍微更改方法的定义行:而不是
function foo() { }
你需要
window.foo = function() { }
这会将匿名声明的函数分配给 window
范围内的对象,该对象可全局访问。然后您可以使用
调用它
window.foo();
或者干脆
foo();
因为它在 window
范围内。
抱歉这个菜鸟问题,但今天对我没有用。
我正在创建一个 Phonegap
应用程序并将 PushWoosh API 集成到我的应用程序中。在收到推送通知时,我想再次 运行 我以前的功能,因此数据将被更新。
Pushwoosh 有这样的 JS 功能:
document.addEventListener('push-notification',
function(event) {
var title = event.notification.title;
var userData = event.notification.userdata;
var notification = event.notification;
if (typeof(userData) != "undefined") {
console.warn('user data: ' + JSON.stringify(userData));
}
var object = JSON.parse(notification.u);
window.runPushFunctions(object.active, object.open); //Runs a jQuery function I have created..
}
);
现在 window.runPushFunctions
看起来像这样:
$(document).ready(function() {
window.runPushFunctions = function(active, open) {
if (active != null || active != undefined) {
$('.hubs-page').removeClass('hubs-active').hide().eq(active).show().addClass('hubs-active');
}
if (open == 2) {
$('html').addClass('hubs-opening');
}
//Trying to run functions from jQuery file that will get data from database and so on..
received();
sent();
checkFriends();
};
});
但由于某些原因我不能 运行 received()
、sent()
、checkFriends()
。
这些函数在它们自己的文件中是这样设置的:
(function($) {
'use strict';
function checkFriends () {
$.getJSON('url',function(data){
$.each(data,function(index,value){
//Do something with value
});
});
}
我按以下顺序包括文件:
file.js -> received(); sent();
file.js -> checkFriends();
file.js -> pushnotifications
任何帮助将不胜感激
我不确定我是否理解你的问题,但在我看来你正在函数范围内定义函数 checkFriends。如果您需要访问该函数定义,则需要在可以从全局范围引用的对象上声明它。显然,最简单的方法是将其附加到 window,尽管有很多理由不这样做。
window.checkFriends = function(){//code that does stuff};
正如这里的另一个答案所说,您正在确定方法定义的范围,因此在包含方法之外的任何地方都无法访问它们。
(function($) {
这是一个方法定义。无法在其外部访问在其中非全局声明的任何变量或函数。因此,您需要在其他地方定义函数或将它们设为全局函数以便访问它们。
如果您要在其他地方定义它们,只需将函数定义移动到同一文件的顶部,在 (function($) {})()
范围之外。
如果您改用全局定义,则需要稍微更改方法的定义行:而不是
function foo() { }
你需要
window.foo = function() { }
这会将匿名声明的函数分配给 window
范围内的对象,该对象可全局访问。然后您可以使用
window.foo();
或者干脆
foo();
因为它在 window
范围内。