我的网站上有很多关于DOM的动态内容。如何委托numeric()函数?
我知道我必须做这样的事情:
$(document.body).on('.js-numeric', 'keydown' (change etc.) function() {});
但我不确定如何插入numeric()
函数。如果我想对静态内容使用数字函数,它可以正常工作,如下所示:
$(".js-numeric").numeric();
答案 0 :(得分:1)
如果您的元素位于body
标记中,则可以执行此操作:
$(document.body).on('keydown', '.js-numeric', function() {})
您交换了参数,如果您read the docs可以看到:
.on(events [,selector] [,data],handler)
在events
之前取selector
,而不是像现在这样做。
如果您阅读我上面的代码片段,那么读取比您编写的代码更符合逻辑(不是我编写更干净的代码,而只是jQuery开发人员考虑这些事情:))
这会将keydown
事件从document.body
委托给任何动态添加的.js-numeric
元素。
如果你想在.numeric()
编辑的元素上调用keydown
,那么你会这样写:
$(document.body).on('keydown', '.js-numeric', function() {
// $(this) is the element that triggered the event
$(this).numeric();
})
答案 1 :(得分:1)
你的语法错误
$(document).on('keydown', '.js-numeric', function( e ) {
stackLog( e.which );
$(this).numeric();
});
function stackLog( log ){
var _console = document.querySelector('#console');
_console.innerHTML = log + '\n' + _console.innerHTML;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea class="js-numeric"></textarea>
<pre id="console"></pre>
&#13;