0

すべての例/回答は、ページが読み込まれたときにパーシャルのjavascriptを実行していることを示しているようです。

このパーシャルは、ページの読み込み時に読み込まれません...後でAJAXを使用してボタンをクリックすると読み込まれます。

JSを試しました

中身:

$(document).ready(function () {

と :

$(function(){

と :

それ自体で

最初はまったくトリガーされません。2番目と3番目は、2番目のページの読み込み時にトリガーされるようです。私のjsが影響するdivが存在するからだと思います。では、部分ロード時に実行するにはどうすればよいですか。

4

2 に答える 2

3
$(document).ready(function () {
    ...
});

ページが読み込まれたときにトリガーされます (より具体的には $(document).ready が document.DOMContentLoaded または window.loaded イベントに関連付けられています) が、パーシャルを ajax で読み込むため、パーシャルが読み込まれたときにページ読み込みイベントが既に発生しています。

jQuery を使用して ajax 経由で部分ページをロードする場合は、関数を

$ajax(...
}).done(function ( data ) {
    yourFunction();
});

または、AjaxHelper クラスを使用する場合 (たとえば、カミソリ @Ajax.ActionLink(... ) を使用)、その AjaxOption の OnSuccess または OnComplete プロパティを使用して、JavaScript 関数を接続します。次のように:

@Ajax.ActionLink("Load partial", "MyPartialAction", new AjaxOptions
{
    UpdateTargetId="partialContainer",
    OnSuccess="partialLoaded"
}

このコードは、MyPartialAction アクションから返されたパーシャルを「partialContainer」ID を持つマークアップにロードし、パーシャルがロードされた後、partialLoaded という名前の JavaScript 関数をロードします。

于 2013-01-25T17:14:56.357 に答える
2

パーシャルがロードされたときに実行する場合は、パーシャルのリクエストを発行しているもののコールバックで実行します。このリクエストの発行者がJqueryの場合、次のようになります。

$.get(url, function (result) {
    // Do whatever you want here in the success callback.
});

Ajax.ActionLinkなどのMVCヘルパーメソッドを使用して何かをしている場合は、応答時に呼び出すjquery関数を指定できます

@Ajax.ActionLink("NameOfLink", "ControllerAction", new AjaxOptions
{
    HttpMethod = "GET",
    OnSuccess = "javascriptFunction(data)"
})

function javascriptFunction(data) {
    // Do whatever you want
}
于 2013-01-25T17:13:55.143 に答える