2014-01-25 3 views
-2

Ссылка Код здесьПочему мой addClass не работает?

http://jsfiddle.net/sagesony/ryG6Z/

$(document).ready(function(){ 
    $("#box").draggable({ revert:"invalid" }); 
    $("#box2").draggable({ revert:"invalid" }); 
    $("#target").droppable({ 
     accept: "#box2", 
     drop: function(event,ui) { 
     accept: "#box2", 
      $("#target").addClass("changecolor"); } 

    }); 
}); 

Мой addClass не работает, когда я двигаю # BOX2 над #target.

Пожалуйста, помогите мне.

Заранее спасибо.

+0

его работы в вашей скрипке – Rooster

+0

я не в состоянии видеть это. Цвет границы должен измениться, или если я добавлю цвет фона в класс ......., он не изменится. – user3235729

+0

Ваша настройка его на белый с уже белым фоном, поэтому вы не можете ее увидеть. попробуйте установить его на красный или что-то, если вы хотите его увидеть или установить цвет фона – Rooster

ответ

1

У вас есть несколько проблем здесь:

$(document).ready(function(){ 
    $("#box").draggable({ revert:"invalid" }); 
    $("#box2").draggable({ revert:"invalid" }); 
    $("#target").droppable({ 
     accept: "#box2", 
     drop: function(event,ui) { 
      //accept: "#box2", <- This is wrong and won't run 
      $(event.target).addClass("changecolor"); 
     } 
    }); 
}); 

Снимите accept: "#box2",
Вы можете получить цель с помощью $(event.target) или $(this)

проблема CSS:
То, как CSS работает , Идентификаторы имеют более высокий приоритет, чем Классы, поэтому, когда вы добавляете класс changecolor, t переопределяет CSS.

Вы можете это исправить, изменив следующим образом:

.changecolor{ 
    border: 1px solid white; 
} 

в

#target.changecolor{ 
    border: 1px solid white; 
} 

Here is a JSFiddle where it works

+0

Спасибо .. он теперь работал с важным. – user3235729

+1

@ user3235729 Вы не должны использовать '! Important'. Если вам нужно использовать '! Important', что обычно означает, что в вашем CSS есть что-то фундаментально неправильно. –

0

Добавить important правило к вашему стилю, потому что есть еще стили, определенные для границы такой же div. Чтобы дать наивысший приоритет вашему классу changeColor, вы должны использовать важное правило.

.changecolor{ 
    border: 2px solid white !important; 

} 

DEMO

+1

Использование символа '! Important' не рекомендуется. Потому что это просто скрывает реальную проблему. Вообще-то! Важно использовать, только если вы сдаетесь. –

+0

Спасибо ... никогда не знала о важности. Теперь он отлично работает. – user3235729

+0

@ AndréSnedeHansen вы вполне правы, но что делать, если пользователь хочет использовать класс с другими div, у которых разные идентификаторы. – semirturgay

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