2011-08-14 6 views
0

div要素に.htmlページ(JavaScriptを含む)を読み込む際に問題があります。jQuery .load()htmlページの中にjavascriptがあります

これは私のdiv要素である:

<div class="content"></div> 

これは私のPHPです:

<?php 
    if(!$_POST['page']) die("0"); 
    $page = (int)$_POST['page']; 
    if(file_exists('pages/page_'.$page.'.html')) 
    echo file_get_contents('pages/page_'.$page.'.html'); 
    else echo 'There is no such page!'; 
?> 

これは私のスクリプトです:

ページが内部でJavaScriptコードをロードされている
var default_content=""; 
$(document).ready(function(){ 
checkURL(); 
$('ul li a').click(function (e){ 
     checkURL(this.hash); 
}); 
//filling in the default content 
default_content = $('.content').html();  
setInterval("checkURL()",250); 
}); 
var lasturl=""; 
function checkURL(hash) 
{ 
if(!hash) hash=window.location.hash;  
if(hash != lasturl) 
{ 
    lasturl=hash;  
    // FIX - if we've used the history buttons to return to the homepage, 
    // fill the pageContent with the default_content   
    if(hash=="") 
    $('.content').html(default_content);   
    else 
    loadPage(hash); 
} 
} 

function loadPage(url) 
{ 
url=url.replace('#page','');  
$('.content').css('visibility','visible'); 
$.ajax({ 
    type: "POST", 
    url: "load_page.php", 
    data: 'page='+url, 
    dataType: "html", 
    success: function(msg){   
     if(parseInt(msg)!=0)    
     { 
      $('.content').html(msg);   
     } 
    }  
}); 
} 

.htmlページは実行されません。 ブラウザのリロードボタンをクリックすると、JavaScriptコードが実行されます。

jqueryを使用してページ内のJavaScriptを実行するにはどうすればよいですか?

答えて

3

スクリプトが意味をなさない

$.ajax({ 
    type: "POST", 
    url: "load_page.php", 
    data: 'page='+url, 
    dataType: "html", 
    success: function(d){ 
     $('.content').html(d);   
    }  
}); 

は優れているとAjax

+0

変数の名前が変更される点を除いて、違いは何ですか? – pimvdb

+2

@pimvdb:.load to .htmlまた、Ajax読み込みコンテンツが自動的に実行されることを説明しました(javascriptは自動的に実行されます) – genesis

1

からロードjavascritページを実行しますlive()にバインドさjQueryのイベントハンドラはありますか?

http://api.jquery.com/live/

ページがロードされた後のjavascript/jqueryのは、DOMに添付されている場合は、click()通常、change()イベントは文句を言わない実行/添付すること。

live()を使用してこれらのイベントを添付する必要があります。

$('#some_element').live('click', function(){}); 

live()要素がページに添付されるたびにイベントハンドラを初期化します。

関連する問題