jQuery .load () HTML-страница с JavaScript внутри - PullRequest
0 голосов
/ 14 августа 2011

У меня проблема с загрузкой .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);        
        }
    }       
});
 }

Когда страница загружена, код JavaScript внутри страницы .html не выполняется. Если я нажму на кнопку перезагрузки браузера, код JavaScript будет выполнен.

Как мне выполнить JavaScript внутри страниц, используя jquery?

Ответы [ 2 ]

3 голосов
/ 14 августа 2011

ваш скрипт не имеет смысла

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

лучше и выполнит страницу javascrit, загруженную из ajax

1 голос
/ 14 августа 2011

Связаны ли обработчики событий jQuery с live()?

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

Если javascript / jquery присоединен к dom после загрузки страницы, обычные события click(), change() не будут прикреплены / выполнены.

Вам необходимо прикрепить эти события, используя live().

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

live() инициализирует обработчик событий всякий раз, когда элемент присоединяется к странице.

...