首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Ajax >

脚本语言总是抓破小弟我头

2014-01-05 
脚本语言总是抓破我头本帖最后由 u013053467 于 2013-12-23 20:05:14 编辑//这是一个js写的ajax,也是拿别

脚本语言总是抓破我头
本帖最后由 u013053467 于 2013-12-23 20:05:14 编辑


//这是一个js写的ajax,也是拿别人的
// JavaScript Document
var http_request=false;
function send_request(url){//初始化,指定处理函数,发送请求的函数
http_request=false;
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest){//Mozilla浏览器
http_request=new XMLHttpRequest();
if(http_request.overrideMimeType){//设置MIME类别
http_request.overrideMimeType("text/xml");
}
}
else if(window.ActiveXObject){//IE浏览器
try{
http_request=new ActiveXObject("Msxml2.XMLHttp");
}catch(e){
try{
http_request=new ActiveXobject("Microsoft.XMLHttp");
}catch(e){}
}
}
if(!http_request){//异常,创建对象实例失败
window.alert("Create XMLHttp error !");
return false;
}
http_request.onreadystatechange=processrequest;
//确定发送请求方式,URL,及是否同步执行下段代码
http_request.open("GET",url,true);
http_request.send(null);
}
//处理返回信息的函数
function processrequest(){
if(http_request.readyState==4){//判断对象状态
if(http_request.status==200){//信息已成功返回,开始处理信息
document.getElementById(reobj).innerHTML=http_request.responseText;


}
else{//页面不正常
alert("404 not found !");
}
}
}
function dopage(obj,url){
document.getElementById(obj).innerHTML="Loading...";
send_request(url);
reobj=obj;
}




因为页面需要 所以 引用了 DIV开关闭效果

$(window).load(function() {
var act='';

$('#content > ul > li').css({position:'absolute', display:'none'});
$('#content > ul > li').find('.box1').css({height:'0'})

$('#menu > li > a span').css({opacity:'0'})

$('#menu > li > a').hover(function(){
$(this).find(' > span').stop().animate({opacity:'1'},600);   
}, function(){
if (!$(this).hasClass('active')) {
$(this).find(' > span').stop().animate({opacity:'0'},600);   
}
})

$('#menu > li').each(function(num){
$(this).data({num:num})
})
$('#content > ul > li').each(function(num){
$(this).data({num:num})
})

if (location.hash.slice(0,3)=='#!/') {
page=location.hash.slice(3);
open_page('#'+page);
fl=false;
}
if ((location.hash=='#')||(location.hash=='')) {
open_page('');
fl=true;
$('#content').stop().animate({height:'668'})
}
$('a').click(function(){
if ($(this).attr('href').slice(0,3)=='#!/') {
page=$(this).attr('href').slice(3);
open_page('#'+page);
return false;
}
if ($(this).attr('data-type')=='close') {
close_page()
}
})
function open_page(page){
location.hash='#!/'+page.slice(1);
$('#menu a').removeClass('active').find(' > span').stop().animate({opacity:'0'},600);
Cufon.replace('#menu a', { fontFamily: 'Ubuntu', hover:true });
num=$(page).data('num');
$('#menu > li').each(function(){  
if ($(this).data('num')==num) {
$(this).find('> a').addClass('active').find('> span').stop().animate({opacity:'1'},600);
Cufon.replace('#menu a', { fontFamily: 'Ubuntu', hover:true });
}
})
fl=false;
$('#content').stop().animate({height:'788'})
if (act!='') {
$(act).find('.box1').stop().animate({height:'0'},700,'easeOutCirc', function(){
$(act).css({display:'none'});
$(page).css({display:'block'}).find('.box1').stop().animate({height:'100%'},700, 'easeOutCirc', function(){
act=page;
});
})
} else {
$(page).css({display:'block'}).find('.box1').stop().animate({height:'100%'},700, 'easeOutCirc', function(){
act=page;
});
}
}
function close_page(page){
$('#menu a').removeClass('active').find(' > span').stop().animate({opacity:'0'},600);
Cufon.replace('#menu a', { fontFamily: 'Ubuntu', hover:true });
location.hash='#';
$(act).find('.box1').stop().animate({height:'0'},700,'easeOutCirc', function(){
$(act).css({display:'none'});
act='';
fl=true;
$('#content').stop().animate({height:'668'})
});
return false;
}
})

 但是 只要同过AJAX 执行回来的数据,效果就没效了 不能关闭DIV窗口 但我返回主页面 的关闭窗口又没事


<!--菜单代码-->
   <li><a title="{lang(backhome)}" href="#!/page_Home"><span></span><strong>{lang(homepage)}</strong></a></li>
                            {loop categories() $t}  
                            <li><a title="{$t[catname]}" onClick="javascript:dopage('{$t[htmldir]}','{$t[url]}');"  href="#!/{$t[htmldir]}"><span></span><strong>{$t[catname]}</strong></a> </li> 


                            {/loop}

<!--ajax返回的div-->

     {loop categories() $t}
                            <li id="{$t[htmldir]}">
                            </li>
      {/loop}


表达不是很好,有劳高手帮忙看看 每次来CSDN都好惭愧,只问不答~不是不想 技术真的太烂
[解决办法]
初始化事件的代码放到ajax的success回调中,因为你的ajax是异步请求的,事件初始化后你的ajax都还没返回,当然没有绑定事件


[解决办法]
引用:
Quote: 引用:

js动态生成html的时候用Jquery的on来绑定事件
能详细点说吗,live绑定试过,但是也没用


$('#menu').on('mouseover','> li > a',function(){
        $(this).find(' > span').stop().animate({opacity:'1'},600);                           
    });
$('#menu').on('mouseleave','> li > a',function(){
        if (!$(this).hasClass('active')) {
            $(this).find(' > span').stop().animate({opacity:'0'},600);                           
        }
    });

热点排行