我在这里遇到问题:http://jsfiddle.net/wkCV6/
当我点击contacto
按钮时,它可以正常打开。但是,当我点击volver
时,它会删除这些类,而会立即再次添加它。当我在执行之间发出一些警报时,我注意到了这一点。
你可以在我的jsfiddle中看到它。
这是我正在使用的JS。
$(function () {
$("div.arrastre").on("click", function () {
$(this).find("div.bloque").addClass("rotated");
var esto = $(this);
setTimeout(function () {
esto.find("div.bloque div.back").addClass("agrandar");
esto.addClass("agrandar")
}, 100);
});
});
$(function () {
$("div#volver").on("click", function () {
var esto = $(this);
setTimeout(function () {
esto.closest("div.bloque").removeClass("rotated");
if (esto.closest("div.back").hasClass("agrandar")) {
esto.closest("div.back").removeClass("agrandar");
alert("se supone que quité la clase agrandar en back ");
};
if (esto.closest("div.arrastre").hasClass("agrandar")) {
esto.closest("div.arrastre").removeClass("agrandar");
alert("se supone que quité la clase agrandar en arrastre");
};
}, 100);
});
});
答案 0 :(得分:3)
单击div#volver
时,将调度click事件并向文档冒泡,在每个ancester上触发。
您触发首次在div.arrastre
上设置的回叫,因为它是#volver
的父级。
setTimeout
,导致在点击#volver
后100ms内添加该类。
为防止点击事件冒泡,您可以在设置的回调中return false;
或stopPropagation
:
$("div#volver").on("click",function(event){
// your code
event.stopPropagation();
return false;
}
答案 1 :(得分:0)
解决方案 http://jsfiddle.net/2S34N/
注意:由于事件已对齐:)
,代码表现得很有趣我为了预防措施settimeout
添加了新的e.preventDefault()
jsut。
希望htis符合需要:)
<强>代码强>
//CAJAS DE CLICK
$(function () {
$("div.arrastre").on("click", function (e) {
e.preventDefault();
$(this).find("div.bloque").addClass("rotated");
var esto = $(this);
setTimeout(function () {
esto.find("div.bloque div.back").addClass("agrandar");
esto.addClass("agrandar")
}, 100);
});
});
$(function () {
$("div#volver").on("click", function (e) {
e.preventDefault();
var esto = $(this);
setTimeout(function () {
esto.closest("div.bloque").removeClass("rotated");
if (esto.closest("div.back").hasClass("agrandar")) {
esto.closest("div.back").removeClass("agrandar");
alert("se supone que quité la clase agrandar en back ");
};
if (esto.closest("div.arrastre").hasClass("agrandar")) {
esto.closest("div.arrastre").removeClass("agrandar");
alert("se supone que quité la clase agrandar en arrastre");
};
}, 200);
});
});