jQuery未在事件上触发函数
我的jQuery函数在使用事件调用时未触发 但是,如果我将我的函数放在事件之外,那么一切都可以完美地工作,并且没有错误 但是,如果我试图用事件触发它,特别是提交或单击,则不会发生任何事情,也不会出现任何错误 我正在使用Cordova,但在我的计算机上的测试服务器上测试时,同样的问题也会发生 我的科尔多瓦文件 编辑 因此,我在一个JSFIDLE中测试了该函数,所有功能都运行得很好。基本上,现在我知道我的函数按原样工作,但事件没有触发。想让每个人都知道。在注册事件处理程序以侦听事件之前,“deviceready”事件是否会发生?可能在$(document).ready()回调中太晚了 我不喜欢科尔多瓦的,因为他们的建议相互矛盾。一方面,它们告诉您在添加事件侦听器之前等待DOM准备就绪,但随后它们展示了一个在加载DOM之前在头部添加侦听器的示例 这种方法有点冗长,但如果您有一个竞争条件,deviceready有时在$(document).ready()之前启动,这可能是一个有效的解决方案 您可以在头标签中尝试以下内容:jQuery未在事件上触发函数,jquery,events,jquery-plugins,cordova,Jquery,Events,Jquery Plugins,Cordova,我的jQuery函数在使用事件调用时未触发 但是,如果我将我的函数放在事件之外,那么一切都可以完美地工作,并且没有错误 但是,如果我试图用事件触发它,特别是提交或单击,则不会发生任何事情,也不会出现任何错误 我正在使用Cordova,但在我的计算机上的测试服务器上测试时,同样的问题也会发生 我的科尔多瓦文件 编辑 因此,我在一个JSFIDLE中测试了该函数,所有功能都运行得很好。基本上,现在我知道我的函数按原样工作,但事件没有触发。想让每个人都知道。在注册事件处理程序以侦听事件之前,“devic
<head>
<script type="text/javascript">
var haveGeoLocation, isDomReady;
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
navigator.geolocation.getCurrentPosition(onSuccess, onError);
}
function onSuccess(position) {
//Trigger My Functions
haveGeoLocation = true;
configLoginSubmit();
}
function onError(error) {
alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n');
}
// configLoginSubmit() will be called from both onSuccess and $(document).ready()
// but will not attempt it's business until both states are satisfied.
function configLoginSubmit() {
if (isDomReady && haveGeoLocation) {
$("#login").submit(function() {
$(this).login();
});
}
}
$(document).ready(function() {
isDomReady = true;
configLoginSubmit();
}
</script>
</head>
var haveGeoLocation,isDomReady;
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
函数ondevicerady(){
navigator.geolocation.getCurrentPosition(onSuccess,onError);
}
成功时的功能(位置){
//触发我的功能
haveGeoLocation=true;
configLoginSubmit();
}
函数onError(错误){
警报('code:'+error.code+'\n'+'消息:'+error.message+'\n');
}
//将从onSuccess和$(document).ready()调用configLoginSubmit()
//但在两个州都满意之前,他不会尝试这件事。
函数configLoginSubmit(){
if(isDomReady和haveGeoLocation){
$(“#登录”).submit(函数(){
$(this.login();
});
}
}
$(文档).ready(函数(){
isDomReady=true;
configLoginSubmit();
}
为什么在$(文档)之后有两个开头的{
s.ready(function()
?这是一个错误。使用了一个代码清理器,并认为我捕获了所有内容。感谢我的推荐--甚至还有一个很好的用于Sublime Text 2(或3)的插件。如果修复该错误没有帮助,请尝试在所有回调中放置警报,并查看哪些会触发,哪些不会…我理解您的意思。如果我使用的是jQuery,则不会$(document).ready()
是否需要首先调用?使用Cordova时会产生混淆,因为必须首先调用设备ADY
。基本上,您可以初始化非jQuery函数的jQuery吗?
(function ($) {
$.fn.extend({
login: function()
{
alert("yes");
}
});
})(jQuery);
<head>
<script type="text/javascript">
var haveGeoLocation, isDomReady;
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
navigator.geolocation.getCurrentPosition(onSuccess, onError);
}
function onSuccess(position) {
//Trigger My Functions
haveGeoLocation = true;
configLoginSubmit();
}
function onError(error) {
alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n');
}
// configLoginSubmit() will be called from both onSuccess and $(document).ready()
// but will not attempt it's business until both states are satisfied.
function configLoginSubmit() {
if (isDomReady && haveGeoLocation) {
$("#login").submit(function() {
$(this).login();
});
}
}
$(document).ready(function() {
isDomReady = true;
configLoginSubmit();
}
</script>
</head>