[英]Detect if javascript file is loaded after the tag has been added to the page
[英]Calling Javascript in a page after it's been loaded by jQuery GET
想象一個正常的頁面在頭部調用javscript。 問題是某些內容直到我單擊鏈接后才加載。 隨后,當此鏈接加載內容時,它將無法工作。 這是因為我猜Javascript已經運行,因此不會將自己附加到稍后調用的那些元素上。 只有標准的html被調用。
因此,例如,這是調用我的外部html的代碼。
$.get('content.inc.php', {id:id}, function(data){
$('#feature').children().fadeTo('fast', 0).parent().slideUp('slow', function(){
$(this).html(data).slideDown('slow');
});
});
例如,如果我正在調用html且H1標簽已經在頁面中,cufon將可以工作。 但是,由於我通過上述方法加載內容,因此H1標簽不會更改為我選擇的字體。這只是一個示例。 同樣適用於任何JavaScript。
我很想知道是否有一種方法可以解決以上功能收到的同時不調用javascript和html的問題
如果要將事件附加到動態創建的頁面元素上,請查看“實時”關鍵字。
$('H1').live("click", function() { alert('it works!'); });
希望這就是您想要的。
Cufon.refresh()
做什么嗎?
如您所說, Cufon
只是一個示例 ,我還建議您使用更籠統的內容:
$.get(url, options, function(html, status) {
var dom = $(html);
// call your function to manipulate the new elements and attach
// event handlers etc:
enhance(dom);
// insert DOM into page and animate:
dom.hide();
$target_element.append(dom); // <-- append/prepend/replace whatever.
dom.show(); // <-- replace with custom animation
});
您可以將事件處理程序附加到通過回調函數內部的get()
獲得的數據上。 例如
$.get('content.inc.php', {id:id}, function(data){
$('#feature').children().fadeTo('fast', 0).parent().slideUp('slow', function(){
$(this).html(data).find('a').click(function(e) {
// specify an event handler for <a> elements in returned data
}).end().slideDown('slow');
});
});
live()
也可能是您的選擇,具體取決於您要綁定到的事件(由於live()
使用事件委托,因此不支持所有事件 )。
安迪嘗試一下。 在每個AJAX請求完成之后且html實際添加到頁面之前,它將調用Cufon代碼。
$.get('content.inc.php', {id:id}, function(data){
$('#feature').children().fadeTo('fast', 0).parent().slideUp('slow', function(){
$(this).html(data);
Cufon.replace('h1');
$(this).slideDown('slow');
});
});
由於安全原因而未執行JavaScript,或者因為jQuery只是將該元素的innerHTML設置為某些文本(不包含在JavScript中),如果包含了該文本。 因此,安全性是另外一個影響。
怎么解決呢?
嘗試在您的響應中查找所有SCRIPT標簽,並將其作為休假執行:
var scripts = myelement.getElementsByTagName("SCRIPT");
var i = 0;
for (i = 0; i < scripts.length; i++)
eval(scripts[i].innerHTML);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.