Javascript JQuery click函数不处理特定项

Javascript JQuery click函数不处理特定项,javascript,jquery,Javascript,Jquery,请查看JSFIDLE链接,并解释为什么在我们选择另一个项目并返回到第一个选定项目后,单击功能不起作用。在我看来,这有点奇怪,因为所有类似的项目都会触发click函数,但默认选中的项目却不会 在本例中,首先单击F,然后单击E。您会发现除E外,所有其他项目都可以单击 $(".items.cursor:not('.selected')").on('click',function(){ $('.items.selected').removeClass('selected'); $(

请查看JSFIDLE链接,并解释为什么在我们选择另一个项目并返回到第一个选定项目后,单击功能不起作用。在我看来,这有点奇怪,因为所有类似的项目都会触发click函数,但默认选中的项目却不会

在本例中,首先单击F,然后单击E。您会发现除E外,所有其他项目都可以单击

$(".items.cursor:not('.selected')").on('click',function(){   
    $('.items.selected').removeClass('selected');
    $(this).addClass('selected');
});
当你写作时

$(".items.cursor:not('.selected')").on('click',function(){
将事件处理程序绑定到绑定时未选择的所有项目,而不是单击时。因此,您不会绑定到最初选择的元素

您可以使用上的
和委派来保留您的选择器,并在每次测试时对其进行测试,但这里有一个更好的解决方案:

$(".items.cursor").on('click',function(){
  if ($(this).hasClass('selected')) return;
  $('.items.selected').removeClass('selected');
  $(this).addClass('selected');
});

(在这个特定的示例中,测试并不是很有用,但是如果您添加了更多的代码,并且如果用户单击了已经选择的元素,则不希望执行该测试,那么测试可能会有用)

您将单击事件上的函数仅绑定到未选择的元素。
加载页面并绑定此函数时,将选择E。

有效!!非常感谢您提供的解决方案及其应用程序explanation@ZamaMohammed当你的问题被解决时,你就被解雇了。