jqueryクリックli重複ロード防止実装コード

5477 ワード

コンテンツのロードが遅いので、liで何気なく2回クリックした場合、2回要求される可能性があります.これは私たちが見たくないことです.今日javascript-jquery群の1筒で2つのdemoを送ってくれました.彼の方法はクリックしたliノードをコピーして、ロードが終わったら再挿入することです.明らかに私の機能には向いていません.困ったことに、liクリック時にloadingピクチャ(ajaxロード前)を加えて、liノードにimg要素が存在するかどうかを判断し、存在しない場合はajaxコンテンツをロードし、そうでない場合は処理しない.テストに合格できました(^o^)/.




jquery ajax


<br>$(function(){ <br>setHeight("#siderbar",130); // <br>$(window).resize(function(){setHeight("#siderbar",130)}); // <br>$.get("sider.html",function(data){ <br>$('#siderbar_box').append(data); <br>}); <br>/* ID */ <br>function setHeight(id,h){ <br>var windowHeight=$(window).height(); <br>$(id).css({"height":(windowHeight-h)+"px"}); <br>} <br>// li <br>$("#siderbar_box ul li a").live("click",function(){ <br>var $current=$(this); <br>var $currentli=$(this).parent(); <br>if($currentli.children("ul").attr("id")==undefined) // ajax <br>{ <br>$currentli.siblings().children("ul").slideUp('fast'); <br>$currentli.siblings().children("a").removeClass("focus"); <br>$.get("chapter.html",function(data){ <br>$current.addClass("focus").parent().append(data); <br>showChapter(); // content <br>}); <br> <br>}else{ <br>$currentli.siblings().children("ul").slideUp('fast'); <br>$currentli.siblings().children("a").removeClass("focus"); <br>if($currentli.children("ul").is(":visible")) // <br>{ <br> <br>$current.removeClass("focus").parent().children("ul").slideUp('fast'); <br>}else{ <br> <br>$current.addClass("focus").parent().children("ul").slideDown('slow'); <br>showChapter(); <br>} <br>} <br>}); <br>//content <br>function showChapter(){ <br>$.get("chapter.html",function(data){ <br>$("#content").html(data); <br>$("#content ul li").live("click",function(){ // <br>$current=$(this); <br>if($current.children("table").attr("id")==undefined) // , ajax <br>{ <br>if($current.children("span").find("img").size()<1) // , <br>{ <br>$current.children("span").append("<img src='loading.gif' border='none'/>"); // <br>$.get("table.html",function(data){ <br>$current.append(data).children("span").addClass("highlight").find("img").remove(); // <br>}); <br>} <br>}else{ <br> <br>if($current.children("table").is(":visible")) <br>{ <br>$current.children("span").removeClass("highlight").next("table").hide(); <br> <br>}else{ <br> <br>$current.children("span").addClass("highlight").next("table").show(); <br>} <br>} <br> <br>}); <br>}); <br>} <br>}); <br>















プレゼンテーションアドレスhttp://demo.jb51.net/js/jquery_li_click/demo.html
パッケージのダウンロードhttp://xiazai.jb51.net/201012/yuanma/jquery_li_click.rar