2016-11-12 12 views
0

このjQuery関数を使用して、クリック時にdiv内に外部ページを読み込みます。.loadとdiv内の外部ページをアンロード

$(document).on("click", ".more", function() { 
 
$("#wait").load("www.google.com") 
 
}), 
 
$(document).on("click",".more",function(){ 
 
$("#wait").empty() 
 
})
#wait{ 
 
    width:80vw; 
 
    height:80vh; 
 
    position:fixed; 
 
    top:30px; 
 
    left:30px; 
 
    background:red; 
 
} 
 

 
#more{cursor:pointer}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div id="more">CLICK</div> 
 
<div id="wait"></div>

私はそれはそれは空になり、再びDIVをクリックして表示する場合、それは動作しますが。
.empty()の代替手段はありますか?

ありがとうございました。

+0

「.more'と '.less'が同じ理由である理由を知る方法がないため、より多くのhtmlコンテキストを表示する必要があります。 'show()'や 'hide()'や単に 'toggle()'が好きなように聞こえます。これらすべてを[jQuery API](http://api.jquery.com/)で見つけることができます – charlietfl

+0

@charlietfl .moreとボタンをクリックすると、一度クリックすると名前が変わります。 ロードして切り替えたいのですが、切り替えたときにそのページがdivから消えてしまいます。 – Federico

+0

しかし、正直なところ、[mcve] – charlietfl

答えて

2

あなたの投稿から、一度ロードしてからトグルしたいと思うようです。

$(document).on("click", ".moreorless", function() { 
    if ($(this)hasClass("more")) { 
    $("#wait").load("about.html"); 
    $(this).toggleClass("more less"); 
    } 
    else { 
    $("#wait").empty(); 
    $(this).toggleClass("less more"); 
    } 
}); 
+0

私はそれを読み込んで正確にトグルしたいのですが、それがトグルされたら、私はそれがページから消えたいです。私はあなたのコードを試したが、@mplungjanが動作していないようだ。 – Federico

+0

"うまくいかない"という意味は?コンソールのエラー? – mplungjan

+0

エラーはありませんが、hide()関数はdivからコンテンツを削除しません。 – Federico

1

なぜ:あなたは同じボタンをクリックするたびに、あなたがすでに

$(document).on("click", ".more", function() { 
    $("#wait").load("about.html"); 
    $(this).toggleClass("more less"); 
}); 
$(document).on("click",".less",function(){ 
    $("#wait").empty(); 
    $(this).toggleClass("less more"); 
}); 

一つのイベントハンドラを試みたものを非常に多くあるように思われ、これを試す追加および削除するには

$(document).on("click", ".more", function() { 
    var $wait = $("#wait"); 
    if ($wait.html().length==0) $wait.load("about.html"); 
    $wait.show(); 
    $(this).toggleClass("more less"); 
}); 
$(document).on("click",".less",function(){ 
    $("#wait").hide(); 
    $(this).toggleClass("less more"); 
}); 

ボタンをクリックしたときにページロード時にデータをロードしてからtoggle()の表示をロードするだけですか?

+0

私は同じことを尋ねて、ほぼ同じように投稿しました。彼はクリックがロードされ、後でそのコンテンツが削除されることを望んでいます – mplungjan

+0

私はそのページがはるかに軽いが、一度ロードされたコンテンツはそこにとどまることができるということを感じました。 upvote – Federico

+1

ajaxでロードされたときに*「軽い」*であることを心配する必要はありません。ページロード後にajaxが実行されるため、最初のページ読み込み速度全体には影響しません。 – charlietfl

関連する問題