2016-11-12 3 views
0

Я использую эту функцию jQuery для загрузки внешней страницы внутри div..load и .unload внешняя страница внутри 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>

Это работает, но если я нажимаю, чтобы показать, что Див снова будет пустым.
Какая альтернатива .empty()?

Спасибо.

+0

Необходимо показать нам больше html-контекста, так как у нас нет способа узнать, почему '.more' и' .less' - это то же самое. Похоже, вы хотите 'show()' и 'hide()' или просто 'toggle()'. Вы можете найти все это в [jQuery API] (http://api.jquery.com/) – charlietfl

+0

@charlietfl Вы должны рассмотреть .more и .less как кнопку, то же самое он просто меняет имя после щелчка. Я хочу, чтобы он загружался и переключался, но при переключении я хочу, чтобы эта страница исчезла из div. – Federico

+0

, но, честно говоря, вы должны показать нам, как это работает [mcve] – charlietfl

ответ

2

С вашего поста, кажется, вы хотите загрузить его один раз, а затем просто переключать.

$(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"); 
}); 

Для добавления и удаления каждый раз, когда вы нажимаете на кнопку SAME попробовать это, который, кажется, очень много того, что вы уже пробовали

$(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", ".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

Почему не просто загрузите данные на загрузку страницы, а затем нажмите toggle() дисплей при нажатии кнопки?

$(function(){ 
    // add the content right when page loads 
    $("#wait").load("about.html"); 
    $('#more').click(function(){ 
     // toggle display 
     $("#wait").toggle(); 
     // toggle class 
     $(this).toggleClass("less more"); 
    }); 
}); 
+0

Я спросил то же самое и разместил почти то же самое. Он хочет, чтобы щелчок загрузился, а затем удалил контент. – mplungjan

+0

Не знаю. Я чувствовал, что witouth, содержимое которого намного легче, но действительно загружено, оно может оставаться там. upvote – Federico

+1

Не нужно беспокоиться о том, чтобы быть «легким» *, когда он загружается ajax. Не повлияет на общую начальную скорость загрузки страницы, так как ajax будет выполняться после загрузки страницы. – charlietfl

Смежные вопросы