2012-01-16 26 views
2

this代碼:只有當我顯示它的容器時,我如何才能在<script></script>內執行代碼?

HTML

<a href="javascript:void(0);" id="showDiv">Show Agency</a> 

<div id="invisibleDiv"> 
    <script src="http://platform.linkedin.com/in.js" type="text/javascript"></script> 
    <script type="IN/CompanyProfile" data-id="1035" data-format="inline" data-related="false"></script> 
</div> 

jQuery的

$("#showDiv").click(function() { 
    $("#invisibleDiv").show(); 
}); 

CSS

#invisibleDiv 
{ 
    display:none; 
} 

當我加載網頁,我看到從外部源加載腳本,如果div被隱藏。腳本使用一些API調用並生成HTML/Javascript。

那麼,我正在尋找的是強制腳本被卸載,如果父母被隱藏;比,當我將顯示它(通過鏈接),在div中加載腳本。

我該怎麼辦?我會避免AJAX。

+1

看到我的更新,與演示 –

回答

2

更新:

<a href="#" id="showDiv">Show Agency</a> 
<div id="invisibleDiv"> 
<script type="IN/CompanyProfile" data-id="1035" data-format="inline" data-related="false"></script> 
</div> 

$(function() { 
    $("#showDiv").click(function() { 
     $.getScript("http://platform.linkedin.com/in.js"); 
    }); 
}); 
+0

+1,不錯....... –

+0

哈哈!這是一個非常好的技巧:) – markzzz

0

你可以將它綁定到你的showDiv點擊函數,內聯腳本馬上被處理......我唯一能想到的其他事情就是讓腳本通過你不想要的ajax加載。

+0

是的,我應該!但它不是我要找的:)事實上,我不得不從src中加載​​一些腳本,只是不提醒:) – markzzz

+0

也許是一個iframe呢? –

+0

@ T.J。克勞德:完成了! – markzzz

1

如果我理解正確,你只是想延遲第三方提供的任意腳本的運行?會有這樣的工作嗎?

<div id="invisibleDiv" style="display:none">Please wait while we load some stuff from Facebook...</div> 

$("#showDiv").click(function(){ 
    $("#invisibleDiv").show().load("http://facebook.com/whatever/andStuff"); 
}); 

有你無法預取的HTML內容的缺點,但我沒有看到任何其他方式。

編輯:好的,它看起來像你編輯的問題,我正在輸入這個......所以你控制invisibleDiv的內容,但你想延遲加載in.js?試試這個...

$("#showDiv").click(function(){ 
    $("#pleaseWaitDiv").show(); 
    $.getScript("http://platform.linkedin.com/in.js", function(){ 
     $("#pleaseWaitDiv").hide(); 
     $("#invisibleDiv").show(); 
    }); 
}); 

同樣,你必須讓用戶等待,而腳本下載,所以我除了pleaseWaitDiv

的更多編輯: 新建一個腳本節點,並追加了。

var scriptNode = $("<script></script>") 
    .attr("type","IN/CompanyProfile") 
    .attr("data-id","1035") 
    .attr("data-format","inline") 
    .attr("data-related","false"); 

$("#invisibleDiv").append(scriptNode); 
$.getScript("http://platform.linkedin.com/in.js", function(){ 
    $("#pleaseWaitDiv").hide(); 
    $("#invisibleDiv").show(); 
}); 
+0

是的,但是你不能用這個方法「加載」一個屬性的源,比如'' – markzzz

+0

ohhh ohhh oohhhhh。您可以創建一個腳本元素並自行追加它。請給我第二個進行第三次編輯:頁 –

相關問題