在一个页面中调用的Javascript它已经被加载的jQuery后GET
-
19-09-2019 - |
题
想象在头一个正常页主叫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');
});
});
如果我打电话例如和H1标签的HTML已经在页面中的Cufón会工作。但是因为我加载通过上述方法H1标签的内容不会与我所拣选font.This改变仅仅是一个例子。这同样适用于任何的JavaScript。
我wonering是否有办法解决,而不当从上面的功能接收它的调用的JavaScript以及在HTML
解决方案
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
});
其他提示
如果您想将事件附加到元素动态创建的页面上看看“活”的关键字。
$('H1').live("click", function() { alert('it works!'); });
希望这是你所期待的。
您可以将事件处理程序,你通过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()
使用事件代表团的不是所有的事件都支持)。
安迪尝试。它将调用的Cufón代码每个AJAX请求完成之前的HTML被实际添加到页面之后。
$.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不是因为OR beccause jQuery是这个元素的innerHTML只设置一些文本,如果它含有(其不被解释为一个JavScript)的安全性的原因执行。因此,安全性是旁的效果。
如何解决呢?
试图找到你的所有响应SCRIPT标签,并执行它们作为休耕:
var scripts = myelement.getElementsByTagName("SCRIPT");
var i = 0;
for (i = 0; i < scripts.length; i++)
eval(scripts[i].innerHTML);
不隶属于 StackOverflow