2013-08-13 4 views
0

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

к сожалению, в то время, кажется, что это действительно работает, это только кажется, работает иногда. И насколько непротиворечивость всякого рода обеспокоен я не смог найти.

$(document).on("click", ".furniture", function() { 
    console.log("YouBeClickin'"); 
    if (isCurrentElem == 1) { 
     $(currentElem).removeClass("chosen") 
    } 
    currentElem = "#" + this.id; 
    $(currentElem).addClass("chosen"); 
    isCurrentElem = 1; 
    //alert(currentElem); 
}); 

Я добавляю мой furniture классифицирован элементов динамически с JavaScript, иначе я бы опубликовал HTML. После проверки HTML, очевидно, что t my div s, чтобы получить классификацию с furniture, поэтому проблема не лежит там.

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

Любая помощь была бы принята с благодарностью.

+0

У вас есть ссылка на пример страницы, на которой это происходит ? –

+0

Какую версию jQuery вы используете? –

+0

Единственный способ, по которому это событие не будет вызвано, - это если у элемента не было класса, который, по вашему мнению, он делает. Предоставьте код, который воссоздает вашу проблему, в противном случае это не более чем требование, которое невозможно воспроизвести. –

ответ

-1

Try:

$(document).bind(function() { 
    console.log("YouBeClickin'"); 
    if (isCurrentElem == 1) { 
     $(currentElem).removeClass("chosen") 
    } 
    currentElem = "#" + this.id; 
    $(currentElem).addClass("chosen"); 
    isCurrentElem = 1; 
    //alert(currentElem); 
}); 

или Jquery:

$(document).onclick(function() { 
    console.log("YouBeClickin'"); 
    if (isCurrentElem == 1) { 
     $(currentElem).removeClass("chosen") 
    } 
    currentElem = "#" + this.id; 
    $(currentElem).addClass("chosen"); 
    isCurrentElem = 1; 
    //alert(currentElem); 
}); 
0

Вы, вероятно, хотите что-то вроде этого:

var currentFurniture; // predefine the "global" 

$(document).on("click", ".furniture", function() { 
    console.log("YouBeClickin'"); 
    if (currentFurniture !== this) { 
     $(currentFurniture).removeClass("chosen"); 
     currentFurniture = this; 
     $(this).addClass("chosen"); 
    } 
}); 
+0

Спасибо, но глобально предопределено около 200 строк в моем скрипте со всеми моими другими глобальными :) – aprohl5

+0

это только для протокола;) возможно, вы объявили 'click 'обработчик с' stopPropagation' на вложенном элементе? – metadings

+0

Получил это. Я считаю, что на самом деле я, возможно, просто прикрывал мебель, разделенную на div, на второй div, который был полностью прозрачным. , , – aprohl5

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