Javascript委托和numeric()函数

时间:2015-12-08 11:48:48

标签: javascript

我的网站上有很多关于DOM的动态内容。如何委托numeric()函数?

我知道我必须做这样的事情:

$(document.body).on('.js-numeric', 'keydown' (change etc.) function() {});

但我不确定如何插入numeric()函数。如果我想对静态内容使用数字函数,它可以正常工作,如下所示:

$(".js-numeric").numeric();

2 个答案:

答案 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;
&#13;
&#13;