.click没有注册更改的类

问题描述:

我正在尝试创建一个脚本,它将更改另一个元素的类以避免在新类下激活脚本,但是,它没有向脚本注册,脚本会考虑老班还在那里。.click没有注册更改的类

<script> 
$(document).ready(function(){ 
$(".element1").click(function(){ 
    $(".element1").addClass("clicked"); 
    $(".element1").removeClass("element1"); 
});}); 
</script> 

当前代码是以上我正在尝试实现。

+2

什么连同它的HTML? – Jhecht

+1

是的,请添加所需的代码 –

+0

我已经为一个更新的,这肯定需要一个http://*.com/questions/41413773/click-not-registering-changed-class/41413810#41413810 – vijay

试试这个,你可以通过使用特定元素的onclick来实现它。这里点击监听器在点击时绑定到文档中的“.element1”。

,如果你想执行一个click事件只有一次,那么你也可以使用.one()

$(".element1").one("click",function(){ 
    <!-- your code here --> 
}); 

$(document).ready(function() { 
 
    $(document).on("click", ".element1", function() { 
 
    console.log("click"); 
 
    $(".element1").addClass("clicked"); 
 
    $(".element1").removeClass("element1"); 
 
    }); 
 
});
.element1 { 
 
    width: 100px; 
 
    height: 100px; 
 
    background-color: green; 
 
} 
 
.clicked { 
 
    width: 100px; 
 
    height: 100px; 
 
    background-color: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<div id="div1" class="element1"></div>

+0

这工作太, 谢谢。 –

+1

如果要执行你的事件只是一个时间则u也可以使用。一()在更新 – vijay

+0

同样的问题给你,有没有办法扭转这种脚本,并添加回“部件1”,同时取消对点击“点击”另一个元素如元素2并重复。 –

不喜欢这里这

$(document).ready(function() { 
    $(".element1").click(function() { 
    $(this).addClass("clicked").removeClass("element1"); 
    }); 
}); 

jquery method-chaining用来。你不需要选择元素多的时间来添加方法将其

我的解决方案是:在div

看到一个(点击),关(),上();在:

http://www.w3schools.com/jquery/event_one.asp

http://www.w3schools.com/jquery/event_on.asp

http://www.w3schools.com/jquery/event_off.asp

$(document).ready(function(){ 
 
$(".element1").one("click", function() { 
 
    console.log("is clicked"); 
 
    $(".element1").addClass("clicked").removeClass("element1"); 
 
}); 
 
});
.element1{ 
 
background-color:red; 
 
} 
 
.clicked{ 
 
background-color:blue; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="element1">hola</div>

+0

这产生了和我一样的问题,当你点击div“clicked”时,它仍然认为你正在点击控制台中看到的element1。 –

+0

@DanRoss编辑我的回答 – hubman

具有类element1被绑定到的点击的元件(一个或多个)加载处理程序...

即使您从中删除类,它仍然绑定到事件处理程序。
正如你可以看到下面:

$(document).ready(function(){ 
 
    $(".element1").click(function(){ 
 
     console.log("click"); 
 
     $(".element1").addClass("clicked"); 
 
     $(".element1").removeClass("element1"); 
 
    }); 
 
});
.element1{ 
 
    color:blue; 
 
} 
 
.clicked{ 
 
    color:red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="element1">element 1</div>

我建议你使用off()这样的:
感谢Dashtinejad为mentionning该.unbind()被弃用的jQuery 3.0 ...工程一样。

$(document).ready(function(){ 
 
    $(".element1").click(function(){ 
 
     console.log("click"); 
 
     $(this).off("click").addClass("clicked").removeClass("element1"); 
 

 
    }); 
 
});
.element1{ 
 
    color:blue; 
 
} 
 
.clicked{ 
 
    color:red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="element1">Element 1</div>

而且使用链接...
;)

+1

从jQuery 3.0开始,'.unbind()'已被弃用。自从jQuery 1.7以来,它被'.off()'方法所取代,所以它的使用已经不受欢迎。 – dashtinejad

+0

我有一个更新的,这肯定是你需要的一个http://*.com/questions/41413773/click-not-registering-changed-class/41413810#41413810 – vijay

+0

好吧,问题,经过测试的一切,我想知道我如何才能扭转这种效应?当这个类被移除并被element1替换时,它仍然认为它是“被单击的”而不是element1。使用相同的代码没有工作,出于某种原因 –