2012-11-10 9 views
6

謝罪、ここではnewbです。他のプラグインをロードするにはどうしたらいいですか?これは私のcurentコードです:ページをajaxページ区切りでロードした後に他のjavascript関数を再初期化する

jQuery(document).ready(function($) { 
var $mainContent = $("load-content"), 
siteUrl = "http://" + top.location.host.toString(), 
url = ''; 

$(document).delegate("a[href^='"+siteUrl+"']:not([href*='/wp-admin/']):not([href*='/wp-login.php']):not([href$='/feed/'])", "click", function() { 

if($.browser.msie){ 
var myie="/"+this.pathname; 
location.hash = myie; 
//alert(location.hash); 

}else{ 

location.hash = this.pathname; 
} 
return false; 
}); 


$("#searchform").submit(function(e) { 

$search = $("#s").val(); 
$search = $.trim($search); 
$search = $search.replace(/\s+/g,'+'); 

location.hash = '?s='+$search; 
e.preventDefault(); 
}); 

$(window).bind('hashchange', function(){ 
url = window.location.hash.substring(1); 
if (!url) { 
return; 
} 

url = url + " #content"; 

$('html, body, document').animate({scrollTop:0}, 'fast'); 

$mainContent.fadeOut(500, function(){$('#content').fadeOut(500, function(){ 
$("#loader").show();});}).load(url, function() { 
$mainContent.fadeIn(500, function(){ 
$("#loader").hide(function(){ $('#content').fadeIn(500);});});}); 
}); 
$(window).trigger('hashchange'); 


}); 

どのように埋め込まれたオブジェクトは機能を保持できますか?あなたは、AJAX-生成されるマークアップをロードすると、主

video js (html5 video player)

Vimeoの

portfolio slideshow for wordpress

答えて

11

などの動画、スライドショーやJavaScriptを使用して他のメディアは、それが持っていた機能を保持しなくなります前。上記の例では、DOMを実行する準備が整った時点で初期化を行います。 ajaxリクエストの実行後にプラグインなどが実行されていることを確認するには、それらを再初期化する必要があります。

上記のコードサンプルでは、​​少しリストラをお勧めします。

function init() { 
    $("#plugin-element").pluginName(); 
} 

jQuery(document).ready(function() { 
    // Initialise the plugin when the DOM is ready to be acted upon 
    init(); 
}); 

そしてこの次、あなたの成功コールバックAJAXリクエストに応じて、あなたがプラグインを再初期化しますどの再びそれを呼び出すことができます。たとえば、あなたが特定のプラグインを初期化するために呼び出すことができますどのinitという関数を作成することができます:

// inside jQuery(document).ready(...) 
$.ajax({ 
    type: 'GET', 
    url: 'page-to-request.html', 
    success: function (data, textStatus, jqXHR) { 
     // Do something with your requested markup (data) 
     $('#ajax-target').html(data);    

     // Reinitialise plugins: 
     init(); 
    }, 
    error: function (jqXHR, textStatus, errorThrown) { 
     // Callback for when the request fails 
    } 
}); 
+1

私が見つけたこのトピックに関するベストアンサー。ありがとう。再初期化は顕著なパフォーマンス上の問題を引き起こしますか? – TimNguyenBSM

+0

パフォーマンスに関する問題も本当に興味があります。私は新しいページの読み込みごとにプレイリストをチェックするプレイヤーに取り組んでいます。各ページで配列を更新します。どういうわけか、私はplugin.pagePlaylist()を動作させることができません。私がinit()を使用すると動作します。同じpagePlaylist()を含む関数...私はむしろpagePlaylist()を呼び出すだけです。 – 6olden

+0

@TimNguyenBSM、いいえ、パフォーマンス上の問題はありません。また、もしそうなら、プラグインの初期化をしないでajaxをロードしたコンテンツを持つことは幼稚で不条理です。 –

関連する問題