2013-09-14 4 views
0

У меня есть серия divs (отображение графики). Нажмите один графический div и что-то написано в div.Какой div активен в настоящий момент?

$("#graphic1").click(function(){ 
    $("#text").html("Something important goes here.") 
} 

Но если пользователь нажмет Graphic1 при отображении graphic8 Я хочу, чтобы сделать что-то еще

if (graphic8 was active before graphic1 was clicked){ 
    do this 
} else { 
    do that 
} 

Для объяснения дальнейшего

  1. Есть много дивов.
  2. любой из этих разделов может быть активным за один раз.
  3. при выборе нового div Я хотел бы знать, какой div активен, прежде чем был выбран новый div.

EDIT 9/14 в ответ на ответы

Вот быстрый пример на jsfiddle: http://jsfiddle.net/MAYO/2DEnY/2/

Я хотел бы, что для дивы в 1. тумблер 2. При выборе нового DIV что описание показано ниже. Я пробовал и не выполнял комбинации предложений if/else. 3. После этого немного сделано (и я думаю, что решение этого решит следующее). Мне бы хотелось, чтобы текстовое описание могло быть различным, в зависимости от того, какой div ранее был активным.

ответ

1

предположим, что ваш HTML структура выглядит

<div id="graphic1" class="graphic"> 
</div> 
<div id="graphic2" class="graphic"> 
</div> 
<div id="graphic3" class="graphic"> 
</div> 
... 

You расслоение плотной код выглядит

$(".graphic").click(function(){ 
    var $before = $(".graphic.active"); //previously active div, do what ever you want, 
             //remember to check whether $before is null or equals to 
             //$(this) 
    $before.removeClass("active"); 
    $(this).addClass("active"); 

    $("#text").html("Something important goes here.") 
}); 
+0

Джейсон, мне, должно быть, не хватает чего-то важного. Следуя вашему примеру - я «должен» быть в состоянии что-то вроде написания ранее активного div. Что-то вроде: $ before.html («Я был здесь»); – Mayo

+0

есть крошечная опечатка в моем ответе, обновленная, попробуйте, если она работает – jasonslyvia

+0

плюс, я изменяю вашу скрипку, чтобы очистить ее. Http://jsfiddle.net/2DEnY/3/ – jasonslyvia

2

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

Сделано скрипку, чтобы продемонстрировать:

http://jsfiddle.net/dPwkE/

JQuery:

$(function(){ 
    $('a').click(function(){ 
     if($('a.active')[0]){ 
      $('a.active').removeClass("active"); 
      $(this).addClass("active"); 
     }else{ 
      $(this).addClass("active"); 
     } 
    }); 
}); 

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

somehting liek это возможно? http://jsfiddle.net/2DEnY/4/

+0

Спасибо, Бризер, но это не то, что я ищу. Следуя примеру, который вы дали здесь, я хотел бы сделать это. – Mayo

+0

@ пользователь2734400 что пропало? – Breezer

+0

Ох. Мой комментарий был усечен. Я отредактировал оригинальный пост и подвел пример jsfiddle. Я хотел бы иметь возможность «знать» активный div и работать с ним. Так. Если div1 активен, и пользователь щелкает div2, я хотел бы знать об этом. пример if (div1 == active && div 2 нажата) {показать эту отличную информацию} elseif (div1 == active и div3 нажата) {показать это} ... Я пробовал множество комбинаций и терпел неудачу каждый раз. – Mayo

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