附加 jQuery 代码以在加载和按钮单击时运行
Attach jQuery code to run onLoad and on button click?
我有以下代码,它获取用户的当前邮政编码并在div中显示它:
(function ($, geolocation) {
if (geolocation) {
geolocation.getCurrentPosition(function (position) {
$.getJSON(
"http://ws.geonames.org/findNearestAddressJSON?callback=?",
{
lat : position.coords.latitude,
lng : position.coords.longitude
},
function (data) {
$(function () {
$('#zip').text(data.address.postalcode);
});
}
);
});
}
}(jQuery, navigator.geolocation));
我相信代码运行on document ready
。这与运行onLoad
的代码相同吗?无论如何,是否可以在单击按钮时运行此代码?我以为这样的事情会起作用,但是使用它不会产生邮政编码on document ready
,或者在单击按钮时:
function update() {
...code from above
}
$('#button').click(function(){update();});
这不会在 document.ready
上运行,除了代码的一部分(function (data) { }
调用中的代码)。
不,document.ready
与onLoad
不同. document.ready
是指可以通过Javascript访问DOM(但不一定渲染/获取); onLoad
是当所有内容都已加载(并且可能---图像等进行渲染)时。
要在单击按钮时运行相同的功能,您已经或多或少地走上了正确的轨道。您需要对该函数的引用:
var update = function ($, geolocation) {
// blah
};
// this will call the same function like you're doing above
update(jQuery, navigator.geolocation);
然后通过点击处理程序运行它:
// don't forget that this has to be in a document.ready handler
jQuery(function ($) {
$('#button').click(function () { update($, navigator.geolocation); });
});
将代码放在其自己的函数中,并在加载时调用该函数。然后让你的按钮onclick(getZipCode())
,它也将调用相同的函数。如果您不希望它加载,请将其从$(function() {});
jQuery中删除。
$(function() {
//On Document Ready, call getZipCode
getZipCode(navigator.geolocation);
});
function getZipCode(geolocation) {
if (geolocation) {
geolocation.getCurrentPosition(function (position) {
$.getJSON(
"http://ws.geonames.org/findNearestAddressJSON?callback=?",
{
lat : position.coords.latitude,
lng : position.coords.longitude
},
function (data) {
$(function () {
$('#zip').text(data.address.postalcode);
});
}
);
});
}
}
我相信代码在文档就绪上运行。这与在加载上运行的代码相同吗?
当从服务器获取整个页面并加载所有图像标签或其他元素时,onload event
就会触发。这肯定需要很长时间,Jquery 使用自己定义的名为 document.ready
的事件,当页面准备好处理您的脚本时触发(这将在加载文档之前发生)
这是改编自JQuery启蒙书:
window.onload native JavaScript 事件可用于 以编程方式处理网页完全加载 浏览器。但是,因为指示一切的事件具有 加载在加载所有资产(图像、Flash 等)之前不会触发, 等待此事件可能相当耗时。更好的解决方案 将在 DOM 可用时立即开始编写脚本 数据处理。jQuery 提供了一个自定义事件,该事件在 DOM 已准备好编写脚本,但在 window.onload 事件触发之前。 这是一个名为ready()的自定义jQuery事件。有一个论点 传递给此函数,该函数是对 jQuery 函数的引用。
对于单击函数,您的更新函数在哪里?尝试在您的文档之外定义它。
- 如何隐藏按钮单击事件上的占位符
- 从Web服务器下载图像按钮单击使用JavaScript
- 在SweetAlert中传递ASP.NET按钮单击事件
- 单选按钮单击可刷新/更改网站的小区域
- 调用按钮单击事件 ajax 加载的用户控件
- 附加 jQuery 代码以在加载和按钮单击时运行
- 在按钮单击时将图像URL数据显示到弹出框中,而无需禁用背景
- 按钮单击服务器单击
- 触发单选按钮单击,并在页面刷新时记住选择
- 如何使用 javascript 而不是使用控制器中的方法在 rails 中呈现部分按钮单击
- jQuery UI 选项卡 - 将参数设置为下一个/上一个按钮单击
- 如何在 Angular JS 中的按钮单击上添加类
- 当元素上有多个类时触发按钮单击事件
- 如何在 HTML 中的按钮单击上更改图像(IMG URL 每次来自服务器)
- 如何使用javascript刷新我的html页面时清除按钮单击
- 阻止后退按钮 - 单击按钮时忽略
- 如何制作按钮.单击“开始时不运行”
- Rails:尝试在按钮单击时渲染部分
- 在页面加载时调用函数,在按钮单击时再次调用函数,但参数不同
- 如何在服务器端的文本中添加按钮单击事件