2013-01-19 89 views
0

我试图加载一些HTML我使用Ajax文件内。 装载工作不仅仅是文件,有什么我不能够做的就是用jQuery选择访问加载HTML。访问动态加载HTML元素

下面是脚本:

$(document).ready(function(){ 
    $.ajax({ 
      url: 'header.html', 
      dataType: 'html', 
      success: function(data) { 
      $("#header").html(data); 
    }); 
}); 

HTML:

<body> 
    <div id="wrapper"> 
     <div id="header"> 
     </div><!--header end--> 
    </div> 
    </body> 

我试图访问HTML元素像这样:

$('#bigmenu').hide(); 
$('#mydiv').mouseenter(function(e){ 
    $('#bigmenu').fadeIn(100); 
}); 

#bigmenu#mydiv动态加载的元素html

但是它的工作原理,如果我尝试访问它们AJAX success函数内。

我的问题是 - 如何访问它们成功的功能之外?

回答

1

Ajax是async呼叫和成功事件将是第一个你的函数执行完毕后。如果你在成功函数被调用之前访问该元素,那么它将不可用。这就是为什么在成功时动态添加元素“#bigmenu”在成功之前不会隐藏。未呈现的隐藏元素将失败,因此在添加成功后执行隐藏功能。类似地,您需要使用on来为动态添加的元素注册事件。

$(document).mouseenter('mouseenter','#mydiv', function(e){ 
    $('#bigmenu').hide(); 
    $('#bigmenu').fadeIn(100); 
}); 
+0

写这个$('#bigmenu')。hide();里面的成功功能是唯一的方法? –

+0

不,成功后添加任何时间。 – Adil

0
$(document).on('mouseenter', '#mydiv', function(e){ 
    $('#bigmenu').hide().fadeIn(100); 
}); 

你必须该事件委托给你的动态加载HTML元素。你必须隐藏()div才能播放动画。

+0

约难言之隐什么?? –

0

随着动态加载元素已改变了DOM,你需要使用on()方法:

$('#bigmenu').hide(); 

$('#mydiv').on('mouseenter', function() { 
    $('#bigmenu').fadeIn(100); 
}); 

你不必这样做大约hide() - 你只需要使用on()使用为中心的功能JavaScript events

+0

$('#bigmenu')。hide();这不起作用.. –

+0

你给你的元素ID为'bigmenu'?你想隐藏在页面加载? – hohner

+0

yes bigmenu是一个ID,我想隐藏 –