Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
加载问题。不受父javascript文件的影响_Javascript_Jquery - Fatal编程技术网

加载问题。不受父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');