<button id="'+item['id']+'" class="btnDeactivateKeyInChildPremiumCustomer waves-effect waves-light">ok</button>
我使用上面的代码在 jquery 每个函数中生成按钮。动态创建的按钮,当我单击按钮时,它应该显示按钮的进度。我正在使用这个 Ladda Button Loader。
btnDeactivateKeyInChildPremiumCustomerClick : function(event){
var id = event.currentTarget.id;
var btnProgress = Ladda.create(document.querySelector('#'+id));
// btnProgress.start(); or btnProgress.stop();
}
然后我通过按钮事件处理程序捕获事件处理上述函数。在该函数内部,它将创建一个 btnProgress 对象。之后我可以调用 start() 或 stop() 函数。在只有一个按钮的情况下,我已经成功地工作了,而没有在每个按钮内部动态创建按钮。但是在每种情况下,它在执行 var btnProgress = Ladda.create(document.querySelector('#'+id)); 时都会显示一些错误。
错误
Uncaught SyntaxError: Failed to execute 'querySelector' on 'Document': '#22' is not a valid selector.
您可以在 HTML5 文档中使用 IDs that start with a digit:
该值在元素的主子树中的所有 ID 中必须是唯一的,并且必须包含至少一个字符。该值不得包含任何空格字符。对于 ID 可以采用的形式没有其他限制;特别是,ID 可以仅包含数字、以数字开头、以下划线开头、仅包含标点符号等。
但是 querySelector
方法使用 CSS3 选择器来查询 DOM,并且 CSS3 不支持以数字开头的 ID 选择器:
在 CSS 中,标识符(包括选择器中的元素名称、类和 ID)只能包含字符 [a-zA-Z0-9] 和 ISO 10646 字符 U+00A0 及更高,加上连字符 (-) 和下划线 ( _);它们不能以数字、两个连字符或一个连字符后跟一个数字开头。
为 ID 属性使用类似 b22
的值,您的代码将起作用。
由于您想通过 ID 选择元素,您还可以使用 .getElementById
方法:
document.getElementById('22')
尽管这在 HTML 中有效,但您不能在 CSS 选择器中使用以整数开头的 ID。
正如所指出的,您可以改用 getElementById
,但您仍然可以使用 querySelector
实现相同的效果:
document.querySelector("[id='22']")
[
、]
(方括号)或 :
(冒号)时,这甚至可以解决罕见的情况
不定期副业成功案例分享
var btnProgress = Ladda.create(document.getElementById(id));
#
用于getElementById
方法。只是身份证。