2012-01-19 27 views
3

執行JavaScript我有一些加載內容與JQuery的.load()函數的一個div的文檔。該加載的內容然後嘗試從原始文檔執行Javascript。這失敗了,可能是顯而易見的原因(我是一個Javascript新手)。這裏是說明我的問題的簡化代碼。jQuery的.load() - 如何原始文檔中從加載內容

的test.html:

<html> 
<head> 
    <script src="http://code.jquery.com/jquery-latest.min.js"></script> 
    <style type="text/css"> 
    div { 
     background: #ccc; 
     margin: 15px; 
     height: 500px; 
     width: 500px; 
     border: 1px solid #666; 
    } 
    </style> 
</head> 
<body> 
    <a href="#" class="loader">Load content into box below</a> 
    <div id="loadbox"></div> 
    <script type="text/javascript"> 

     jQuery(document).ready(function() { 

      $('a.loader').click(function() { 
       $('#loadbox').load('loadme.html'); 
      }); 

      $('a.alerter').click(function() { 
       alert("I've been clicked!"); 
      }); 

     }); 
    </script> 
</body> 
</html> 

loadme.html:

<a href="#" class="alerter">Click me</a> for an alert. 

如果我把JavaScript中的加載的內容警報被觸發,但我有JavaScript的一個大塊,我想要使用多個div完整的加載內容,我不想繼續加載Javascript。有沒有辦法從加載的內容訪問原始HTML中的Javascript?我並不清楚執行什麼命令,特別是當我將內容加載到頁面中時。也許這是我學習的機會!謝謝。

回答

4

DYou應該使用live()delegate()因爲要添加元素添加到文檔(這是jQuery的< 1.7)

jQuery(document).ready(function() { 

     $('a.loader').click(function() { 
      $('#loadbox').load('loadme.html'); 
     }); 

     $('a.alerter').live("click", function() { 
      alert("I've been clicked!"); 
     }); 

    }); 

的jQuery> 1.7則應該使用on()並委託處理程序到主體

jQuery(document).ready(function() { 

     $('a.loader').click(function() { 
      $('#loadbox').load('loadme.html'); 
     }); 

     $('body').on("click", "a.alerter", function() { 
      alert("I've been clicked!"); 
     }); 

    }); 
+0

這是真的很有幫助。它絕對適用於我的例子。真正的文件有點複雜,但如果它起作用,這將是值得的。而開始工作可能只是給我一個教訓。謝謝! – Imaginary

+0

好吧,事實證明我的實際問題與此無關(儘管我爲此問題創建的例子的確如此)。但我無所事事地學到了一些東西。謝謝! – Imaginary

2

因爲dom負載不在這裏,腳本不能找到它; ,PLZ試試吧:

jQuery(document).ready(function() { 
    $('a.loader').click(function() { 
     $('#loadbox').load('loadme.html', function() { 
      $('a.alerter').click(function() { 
       alert("I've been clicked!"); 
      }); 
     }); 
    }); 
}); 
+0

你可以認爲簡單,我們需要一個紙頭,然後我們可以寫。當它被加載時,你需要在這張紙上放置一個功能。 –

+0

謝謝。來自你們兩方的意見幫助我圍繞這裏發生的事情進行思考。 – Imaginary

1

更換

$('a.alerter').click(function() { 
    alert("I've been clicked!"); 
}); 

隨着

$("#loadbox").delegate("a.alerter", "click", function() { 
    alert("I've been clicked!"); 
}); 

這將活動委託給#loadbox,它存在,所以只要#loadbox存在,它將工作。

相關問題