8

申し訳ありませんが、まったくの初心者です。他のプラグインをロードし、ajax で生成されたページをロードした後に他の個別のスクリプトを機能させるにはどうすればよいですか? これは私の現在のコードです:

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');


});

ページ上の埋め込みオブジェクトの機能を維持するにはどうすればよいですか? 主に動画やスライドショーなどJavaScriptを使ったメディア

ビデオ js (html5 ビデオ プレーヤー)

ヴィメオ

ワードプレスのポートフォリオスライドショー

4

1 に答える 1

13

ajaxで生成されたマークアップをロードすると、以前の機能は保持されません。上記の例では、DOMを実行する準備ができたときに初期化しています。ajaxリクエストを実行した後にプラグインなどが実行されていることを確認するには、プラグインを再初期化する必要があります。

上記のコードサンプルを考えると、少し再構築することをお勧めします。たとえば、init特定のプラグインを初期化するために呼び出すことができると呼ばれる関数を作成できます。

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

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

そして、これに続いて、ajaxリクエストの成功コールバックで、プラグインを再初期化するそれを再度呼び出すことができます。

// 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
    }
});
于 2013-01-21T21:58:45.367 に答える