2014-02-17 3 views
0

Я использую .on() с jQuery для отображения div и .load() для загрузки в конкретном div с веб-страницы на моем сервере.Уничтожьте загруженную страницу ajax и скройте div

Как мне закрыть этот div, когда я нажимаю на div и уничтожаю его в DOM, чтобы он не загружался несколько раз?

Это элемент нижнего колонтитула, который может быть показан/скрыт при нажатии ссылки в нижнем колонтитуле.

Я пробовал с .off():

  if ($(window).width() > 500) { 
      // 
      $('.marketSelector',this.$element).on('click', function(e){ 
       e.preventDefault(); 
       var testMarketSelector = $('.testMarketSelector'); 
       testMarketSelector.css({ 
        'display': 'block' 
       }); 
       testMarketSelector.load("/frontend/MarketSelector.html .MarketSelector"); 
       testMarketSelector.off("click", function(){ 
        testMarketSelector.css({ 
         'display': 'none' 
        }); 
       }); 
      }); 
     } 

Я также попытался .one():

 if ($(window).width() > 500) { 
      // 
      $('.marketSelector',this.$element).one('click', function(e){ 
       e.preventDefault(); 
       var testMarketSelector = $('.testMarketSelector'); 
       testMarketSelector.css({ 
        'display': 'block' 
       }); 
       testMarketSelector.load("/frontend/MarketSelector.html .MarketSelector"); 
      }); 
     } 
+0

Вы можете использовать 'this. $ Element.off (" click ")' внутри события click или использовать '$ ('. MarketSelector', этот. $ Element) .one ('click', ... ' –

ответ

0

Изменить событие следующим образом:

$('.marketSelector', this.$element).one('click', function (e) { ... }); 

Уничтожить div, как только вы нажмете на элемент, вы можете использовать плагин, например outerclick или добавить новое событие в тело.

Append это событие слушателя при открытии Dialog:

var $marketingDialog = this.$element; 
$("body").on("click.outer",function(event){ 
// User did not clicked inside of the dialog 
if(!$marketingDialog.parents($(event.target)).length){ 
    $marketingDialog.fadeOut(); 
    $marketingDialog.remove(); 
    $("body").off("click.outer"); 
    } 
}); 
+0

Спасибо Нико, я пробовал это - а также используя .off(), но он ничего не делает для меня? Я собираюсь обновить свой вопрос выше. – tjcss

+0

Вам нужно знать, как уничтожить ваш элемент или вы хотели бы знать, как просто называть его один раз? –

+0

Просто обновил свой вопрос с дополнительной информацией. Мне нужно иметь возможность открывать/закрывать этот div (режим переключения) при нажатии ссылки. – tjcss

0

testMarketSelector.load(...); API имеет обработчик успеха; звоните testMarketSelector.off("click", ...) в обработчик успеха load(). Кроме того, IIRC, есть проблемы, если API-интерфейс load() сам загружает jquery как часть страницы загрузки (кажется, jquery со страницы, загружаемой в DIV, переопределяет родительскую страницу jquery).

+0

Спасибо @ rt2800, но это не сработало для меня, что я сделал не так? 'testMarketSelector.load ("/frontend/MarketSelector.html .MarketSelector", функция() { testMarketSelector.off ("щелчок", функция() { testMarketSelector.css ({ 'отображение': 'ни' }); }); }); }); } ' – tjcss

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