/ / onLoadおよびボタンクリックで実行するjQueryコードを添付しますか。 - javascript、jquery、位置情報

jQueryコードを添付してonLoadを実行し、ボタンをクリックしますか? - javascript、jquery、geolocation

ユーザーの現在の郵便番号を取得して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の外側でそれを定義してみてください。