我一直在爲此掙扎一段時間,但無法弄清楚。希望這是明顯的,我錯過了。
下面的代碼:
$(document).ready(function() {
$('#clickbox').load('eventpage/clicks.html.php #click2', function() {
console.log('click2 loaded');
$(this).hide()
.fadeIn(3000);
$('#click2').click(function(e) {
e.preventDefault();
console.log('click2 clicked');
$('#bizdev').load('pagewithscripttags.php', function (data) {
console.log(data);
console.log('#bizdev is loaded, but scripts are not run');
$('#bizdev').hide();
console.log('bizdev hidden');
});
$('#content').hide();
$('#bizdev').show();
});
});
當我運行此(從外部js文件),該文件「pagewithscripttags.php」被加載到上的click事件的DOM,但劇本不執行,我不明白爲什麼。幫幫我!
然而,當我移動load方法進入第一負載的回調函數,該文件插入到DOM和腳本運行:
$(document).ready(function() {
$('#clickbox').load('eventpage/clicks.html.php #click2', function() {
console.log('click2 loaded');
$(this).hide()
.fadeIn(3000);
$('#bizdev').load('pagewithscripttags.php', function (data) {
console.log(data);
console.log('#bizdev loaded and scripts are run');
$('#bizdev').hide();
console.log('#bizdev hidden');
});
$('#click2').click(function(e) {
e.preventDefault();
console.log('click2 clicked');
$('#content').hide();
$('#bizdev').show();
});
});
爲什麼腳本運行的一部分回調函數,但不是在點擊事件(這是當我需要他們運行)?
這裏是pagewithscripts.php的內容:
<script>console.log('this script was run');</script>
<script type="IN/MemberProfile" data-id="http://linkedin.com/publicprofileurl" data-format="inline" width='106px' data-related="false"></script>
第一個腳本運行,並在執行console.log出現,但第二個是剛插入DOM而不運行,除非我把點擊處理程序之外的.load()方法。
(我需要加載上的click事件,因爲它們需要幾秒鐘才能運行(他們稱之爲LinkedIn的API)並有凍結/滯後,當我在文件上運行他們準備好了劇本。)
如果你想要加載的是LinkedIn的腳本不能你只需立即創建(而不是使用Ajax來獲取它?)。例如:'$(' ').appendTo(document.body)'而不是:'$('#bizdev') .load('pagewithscripttags.php'...' – powerbuoy 2011-12-28 04:07:22