2012-06-04 3 views
0

У меня есть карта. Всякий раз, когда я нажимаю, чтобы указать, что он подтягивает дистрибьюторов и появляется. Однако, если результат не получен из базы данных, он оставляет предыдущий на странице. Что я хочу, если нет результата для этого конкретного состояния, я бы хотел, чтобы контейнер был пустым. Как мне это сделать?Как очистить, если нет результата

$(document).ready(function() { 
    $("#SC").click(function() { 
     if ($("div.SC_info").is(":hidden")) { 
      $("#repinfo_container div.info_cont").removeClass("active"); 
      $("#repinfo_container div.info_cont").addClass("inactive"); 
      $("div.SC_info").slideDown("fast"); 
      $("div.SC_info").removeClass("inactive"); 
      $("div.SC_info").addClass("active"); 
      $("div.inactive").slideUp("fast"); 
     } else {} 
    }); 
});​ 

Некоторые подробности Посмотрите на эту картину. http://i.imgur.com/vozKp.png Это интерактивная карта распределения. Проблема в том, что, например, в базе данных у меня есть результаты (дистрибьюторы) для CA (California). Когда я нажимаю, он подтягивается и показывает внизу. Однако, если я нажму LA (состояние), так как нет результата, он показывает результаты предыдущего нажатия. Я хочу, чтобы, если у меня нет результатов для этого состояния, я хочу, чтобы он показывал этот контейнер вместо того, чтобы показывать предыдущий результат. Надеюсь, теперь это имеет смысл.

Вот исходный код всей страницы

pastebin.com/mxyDpZCx

+0

Что значит «пустой»? Возможно, не установка 'innerHTML = ''' ... – MaxArt

+0

@MaxArt. Ваш путь может привести к утечке памяти! [читать это] (http://stackoverflow.com/q/10305479/601179) – gdoron

+0

@gdoron Я знаю, это было похоже на убийство москита кувалдой :) Кстати, я думаю, что более современные браузеры имеют дело с утечками памяти вызванный 'innerHTML' правильно или, по крайней мере, лучше, чем в прошлом. – MaxArt

ответ

1

То, что я хочу, если нет результата для конкретного государства, я хотел бы, чтобы это сделать контейнер пуст.

$("#repinfo_container").empty(); 
+0

Куда я должен это поставить? Дело в том, что я вытаскиваю данные из базы данных. Моя проблема в том, что нет результата из базы данных, я бы хотел удалить предыдущую. Потому что иначе, если сохранить предыдущий в нижней части. – SNaRe

+0

@SNaRe. Я вообще не понял вопроса. :( – gdoron

+0

Посмотрите на это изображение http://i.imgur.com/vozKp.png Это интерактивная карта распределения. Проблема в том, что, например, в базе данных у меня есть результаты (дистрибьюторы) для CA (California). Когда я щелкнуть мышью по нему и показать внизу. Однако, если я нажму LA (состояние), так как нет результата, он отображает результаты предыдущего нажатия. Я хочу, чтобы у меня не было результатов для этого состояния. чтобы показать этот контейнер вместо того, чтобы показывать предыдущий результат. Надеюсь, теперь это имеет смысл. – SNaRe

1

вы можете сделать:

$(selector).html(''); 

Подсказка:

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

$("div.SC_info").slideDown("fast"); 
$("div.SC_info").removeClass("inactive");  
$("div.SC_info").addClass("active"); 

вы можете получить следующее:

var selection = $("div.SC_info"); 
selection.slideDown("fast"); 
selection.removeClass("inactive");  
selection.addClass("active"); 

Таким образом вы выбираете элементы один раз и выполняете выбор, а не выбираете их три раза.

+0

Где я должен это поставить? Дело в том, что я вытаскиваю данные из базы данных.Моя проблема в том, что нет результата из базы данных, я бы хотел удалить предыдущую. Потому что иначе, если сохранить предыдущий в нижней части. – SNaRe

+0

вы помещаете это в функцию обратного вызова, где вы получаете свои результаты из базы данных. просто проверьте ответ, и если он пустой, очистите контейнер. – Headshota

+0

Разве это невозможно сделать только с jquery? http://pastebin.com/mxyDpZCx вот полный код страницы – SNaRe

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