我在以下情况下没有定义onpaste处理程序:
<div class="inp email" contenteditable="plaintext-only"/></div>
<div class="inp passw" contenteditable="plaintext-only"/></div>
<script>
$(function(){
function handler(_this,e){
alert('paste');
}
$('.inp').each(i,v){
$(this).attr({'onpaste':'handler(this,e)'});
});
});
</script>
为什么我在将函数添加到div之前声明函数?
编辑:我正在使用jquery 1.8.3我不想看到替代方法我更关心为什么我会定义,粘贴事件并不重要,请不要&# 39; t错过我的问题(粗体)
答案 0 :(得分:4)
为什么不以正确的方式开始
$(function(){
$('.inp').on('paste', function(e) {
alert('paste');
});
});
答案 1 :(得分:3)
您可以将.on()
与粘贴事件一起使用,而不是将事件添加为如下属性:
$('.inp').on('paste',function(e){
alert('paste');
});
答案 2 :(得分:0)
您在ready
事件处理程序的本地范围内声明了该函数,但是当事件发生时,代码在全局范围内运行,并且该函数在那里不可见。
如果在全局范围内声明该函数,可以找到它:
function handler(_this,e){
alert('paste');
}
$(function(){
$('.inp').each(i,v){
$(this).attr({'onpaste':'handler(this,e)'});
});
});
答案 3 :(得分:0)
你至少有三个问题:
e
此处。.each
的语法为.each(function (index, element)...
因此,为了实际工作(出于任何奇怪的原因),您的代码应该是:
function handler(_this) {
alert('paste');
}
$(function () {
$('.inp').each(function (i, v) {
$(this).attr({
'onpaste': 'handler(this)'
});
});
});