ユーザーの現在の郵便番号を取得して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();});
回答:
回答№1の場合は3これは実行されません document.ready
コードの一部(コードの内側の部分を除く) function (data) { }
コール。
いいえ、 document.ready
異なる onLoad
. document.ready
DOMがJavascriptを介してアクセス可能な場合(ただし必ずしもレンダリング/取得されるわけではない場合)。 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); });
});
回答№2については2
自分のコードをそれ自身の関数に入れて、ロード時にその関数を呼び出します。それからあなたのボタンを持ってください 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);
});
}
);
});
}
}
回答№3の場合は1
コードはドキュメントの準備ができている上で動作します。これはonLoadを実行しているコードと同じですか?
まあ onload event
ページ全体がサーバーからフェッチされ、すべての画像タグまたはその他の要素がロードされると発生します。 document.ready
これは、ページがスクリプトを処理する準備が整ったときに発生します(ドキュメントが読み込まれる前に発生します)。
これはJQuery Enlightenmentの本を基にしています。
窓。ネイティブJavaScriptイベントをオンロードするために使用することができます Webページが完全に読み込まれたときにプログラムで処理する ブラウザしかし、すべてを示すイベントには すべてのアセット(画像、Flashなど)がロードされるまで、loadedは起動しません。 このイベントを待つのはかなり時間がかかります。より良い解決策 利用可能になり次第、DOMのスクリプト作成を開始します。 操作しました。 jQueryはカスタムイベントを提供します。 DOMはスクリプト化する準備ができていますが、window.onloadイベントが発生する前です。 これはready()と呼ばれるカスタムjQueryイベントです。一つの議論があります jQuery関数への参照であるこの関数に渡されます。
そしてクリック機能のために、あなたのアップデート機能はどこにありますか?あなたのdocument.readyの外側でそれを定義してみてください。