简体   繁体   English

jQuery .on()不触发toggleClass函数

[英]Jquery .on() not triggering toggleClass function

I'm dynamically adding a column on click to a table with a similar class name with JS/Jquery as show below 我正在动态单击添加一列到具有与JS / Jquery相似的类名称的表,如下所示

$("#btn").click(function(){
    $('#week_title').append('<th>Week '+count+'</th>');
    count++;
    $('.tag').append('<td class="highlight"><img src="plus.png"></td>');
});

Then once a column is dynamically added, on click on each cell I have a toggleClass() function to switch a css add_week_bg class function to display it being marked as show below 然后,一旦动态添加了列,则在每个单元格上单击时,我都有一个toggleClass()函数来切换一个css add_week_bg类函数,以将其显示为如下所示

$(".highlight").on("click", function(){
    console.log('clicked')
    $(this).toggleClass("add_bg");
});

My issue comes in to play once the a column has been dynamically added, and when that cell is clicked the .on() doesn't trigger. 一旦动态添加了列,并且单击该单元格时,.on()不会触发,我的问题就会出现。

Here is a JSFiddle http://jsfiddle.net/aqW6a/ 这是一个JSFiddle http://jsfiddle.net/aqW6a/

Thank you in advance. 先感谢您。

You need event delegation ( as .highlight being added dynamically ) 您需要事件委托( 因为.highlight是动态添加的

$('.tag').on("click",".highlight", function(){
    console.log('clicked')
    $(this).toggleClass("add_bg");
});

Demo ------> http://jsfiddle.net/aqW6a/1/ 演示------> http://jsfiddle.net/aqW6a/1/

Try http://api.jquery.com/on/ 尝试http://api.jquery.com/on/

$('.tag').on("click", ".highlight",function(){
    console.log('clicked')
    $(this).toggleClass("add_bg");
});

It's a selector problem, you should operate over a generic selector 这是一个选择器问题,您应该对通用选择器进行操作

$(document).on("click",".highlight", function(){
    console.log('clicked')
    $(this).toggleClass("add_bg");
});

Use event Delegation 使用事件委托

$(".tag").on("click",'.highlight', function () {
    console.log('clicked')
    $(this).toggleClass("add_bg");
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM