加载问题。不受父javascript文件的影响
尝试使用加载问题。不受父javascript文件的影响,javascript,jquery,Javascript,Jquery,尝试使用.load函数加载文件时,新加载的文件不受加载到的父文件中的jQuery的影响。有没有更好的方法让我的javascript文件在这些文件中工作,而不是在每个加载的页面中添加代码?或者,这是让javascript在新加载的文件中工作的唯一方法吗?听起来像是在加载页面后尝试将事件处理程序绑定到元素?例如,您可能在父文档中有类似于以下内容的内容: $('#something').click(function(){ alert('You clicked me'); } 这些事件处理程序将立即“
.load
函数加载文件时,新加载的文件不受加载到的父文件中的jQuery的影响。有没有更好的方法让我的javascript文件在这些文件中工作,而不是在每个加载的页面中添加
代码?或者,这是让javascript在新加载的文件中工作的唯一方法吗?听起来像是在加载页面后尝试将事件处理程序绑定到元素?例如,您可能在父文档中有类似于以下内容的内容:
$('#something').click(function(){ alert('You clicked me'); }
这些事件处理程序将立即“绑定”,并且不会影响使用.load()加载的元素。您必须使用live()
活页夹或.on()
活页夹.on()
是首选,但一开始习惯会有点奇怪
解决问题的最快方法是将事件绑定从更改为。单击,。将e.c.t.更改为。live('click',function(){})
和live('change',function(){})
或者,使用正确的on()
方法,您应该执行以下操作:
$(document).on('click', '#element', function(){ alert('you clicked me'); });
在
方法上运行的元素应该是父容器,而不是通过.load
加载,所有绑定的元素都位于父容器中<代码>文档
就足够了,可以使用,但就性能而言,它不是最好的
如果你发布你的代码,我们可以提供一个更定制的答案。我已经尽了最大的努力详细解释了它,但我可能已经把它复杂化了。所以,如果你有任何问题,那就问吧
jQuery.on():
jQuery.live():这一切都取决于脚本的设置方式。没有脚本意味着没有精确的解决方案
该方法在当前脚本运行时加载脚本。这意味着在加载文件时,脚本很可能已经运行完毕
这就是我们有回拨的原因。回调在另一个操作完成后运行
$.load(url, function(responseText, textStatus, XMLHttpRequest) {
var paragraph = $('<p />').html(responseText);
// append new paragraph
$(document.body).append(paragraph);
});
// hide all paragraphs
$('p').css('display', 'none');
$.load(url,函数(responseText,textStatus,XMLHttpRequest){
var paragration=$('').html(responseText);
//添加新段落
$(document.body).附加(段落);
});
//隐藏所有段落
$('p').css('display','none');
我可以想象你认为添加的段落会隐藏,因为我们隐藏了所有段落
错误
当你的段落添加到正文时,隐藏段落的那一行已经完成了。因此,您必须(再次)在回调中执行如下操作:
$.load(url,函数(responseText,textStatus,XMLHttpRequest){
var paragration=$('').html(responseText);
//添加新段落
$(document.body).附加(段落);
//再做一次
$('p').css('display','none');
});
//隐藏所有段落
$('p').css('display','none');
你能把一个JSFIDLE放在一起吗?当然,我试试。我以为我的问题不需要密码。我只是想知道是否有其他方法可以加载.load,但更好?JSFIDLE似乎不适合我。你能描述一下你正在加载的文件吗?它是HTML文件吗?+1我假设是事件处理程序的。我从来没有想过可能是这样的。太棒了,我想读的东西。这样我可以在完成后调用回调。太棒了,谢谢!
$.load(url, function(responseText, textStatus, XMLHttpRequest) {
var paragraph = $('<p />').html(responseText);
// append new paragraph
$(document.body).append(paragraph);
// do it again
$('p').css('display', 'none');
});
// hide all paragraphs
$('p').css('display', 'none');