jQuery .load()html页面里面有javascript

时间:2011-08-14 09:48:06

标签: javascript jquery html ajax httpresponse

我在将.html页面(内置JavaScript)加载到div元素时遇到问题。

这是我的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!';
?>

这是我的剧本:

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代码。 如果我点击浏览器重新加载按钮,则会执行JavaScript代码。

如何使用jquery在页面内执行JavaScript?

2 个答案:

答案 0 :(得分:3)

你的脚本没有意义

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

更好,并将执行从ajax加载的javascrit页面

答案 1 :(得分:1)

jQuery事件处理程序是否绑定了live()

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

如果在加载页面后将javascript / jquery附加到dom,则不会附加/执行正常click()change()个事件。

您需要使用live()附加这些事件。

$('#some_element').live('click', function(){});
只要元素附加到页面,

live()就会初始化事件处理程序。