Undefined不是一个函数(jQuery add / remove class)

我正在制作一个似乎不起作用的简单交换按钮。

HTML

          

JAVASCRIPT

  function paid(currentId) { if (document.getElementById(currentId).hasClass("no")) { document.getElementById(currentId).removeClass( 'no' ); document.getElementById(currentId).addClass( 'yes' ); } else if (document.getElementById(currentId).hasClass("yes")) { document.getElementById(currentId).removeClass( 'yes' ); document.getElementById(currentId).addClass( 'no' ); } }  

我错过了一些明显的东西吗? 🙂

您没有使用jQuery来选择这些元素,因此它们没有hasClasshasClassaddClass方法。 它们只是DOM元素。 改为使用它:

 function paid(currentId) { // Select the element using jQuery var $elem = $("#"+currentId); if ($elem.hasClass("no")) { $elem.removeClass( 'no' ); $elem.addClass( 'yes' ); } else if ($elem.hasClass("yes")) { $elem.removeClass( 'yes' ); $elem.addClass( 'no' ); } } 

此外,您不应使用onclick属性。 您应该使用jQuery语法:

 $("a").on("click", function() { if ($(this).hasClass("no")) { $(this).removeClass( 'no' ); $(this).addClass( 'yes' ); } else if ($(this).hasClass("yes")) { $(this).removeClass( 'yes' ); $(this).addClass( 'no' ); } }); 

最后,(试图在这里做得很好!)你应该阅读一个很好的jQuery教程,因为你似乎还没有完全掌握使用该库所需的技术。

您可以像这样使用jQuery,而不是创建函数paid()

 jQuery(document).ready(function(){ jQuery('a').click(function(){ jQuery(this).toggleClass('yes'); jQuery(this).toggleClass('no'); }) }) 

这会将click事件绑定到Anchor标记并切换类。

一个纯粹的JavaScript解决方案将是这样的:

HTML

 Link1 Link1 Link1 

jQuery的

 function paid(current) { if(current.className == "no") { current.className = 'yes'; } else if(current.className == "yes") { current.className = 'no'; } } 

小提琴