如何将动态创建的按钮 <span> 中的文本更改为 jQuery?

How can I change the text inside my dynamically created button's <span> with jQuery?

我已查看 How can I change the text inside my <span> with jQuery? 以了解我的现状。但是,这不包括动态创建的按钮。

我正在动态创建包含标签的按钮。

$("<button type='button' id='" + this.patExeId 
                + "' name='exerciseMachine' class='btn exeBtn btn-large col-lg-2 col-md-2 col-sm-2 col-3 m-1 p-3' "
                + "value='" + this.exeName + "'>" + this.exeName + " <span class='label label-light label-as-badge'>0</span></button>").appendTo($("#allExercises"));

三个“this.patExeId”的值为

我想在练习集完成后更新标签。我正在使用单击按钮时触发的测试代码:

$('#'+$(this).attr('id')+ ' span').html('3');

这会触发控制台日志中显示的错误:

jquery.min.js:2 Uncaught Error: Syntax error, unrecognized expression: #OA== span

因为在你的情况下你正在制作一个 select 或类似 #id span 但你用来获取 id 的元素是 this 所以你可以让它更简单直接select 里面的一个元素使用 find()

 $(this).find('span').html('3');

但为了更好地解决您的第一个问题,您使用了 selector 以及包含特殊字符的 ID。 = 在 css 中有特殊含义,因此如果您需要按字面意思包含它,则需要对其进行转义。做一个非常简单的例子来说明,如果你有一个 id 为 #0== 的元素,你应该使用下面的 select 或者:

$('#O\=\=')

为了表明我的观点,这将是您问题的替代解决方案:

$('#' + $(this).attr('id').replace(/=/g, '\=') + ' span').html('3');