`keyup`函数不会触发`iframe`元素

时间:2015-03-08 11:53:35

标签: jquery html iframe

我得到一个iframe,我在其中找到一个元素。我尝试使用keyup div添加editable事件,但它无效...

以下是代码:

var iframebody = $(editorid).siblings().find('iframe').contents().find('body');

    var div = $('<div />', 
              {text:textstring, 
                class:'txtMsg mceNonEditable',
                "data-mce-contenteditable":"false",
                css:{'background':'#f2f2f2','margin-bottom':'5px'}});


    var msgDiv = $('<div />', 
                {html:msgText,class:'msgText mceEditable', 
                "data-mce-contenteditable":"true", 
                css:{'margin-bottom':'5px','outline':'0'}})
                .keyup(function(){
                    console.log('keyup'); //not working
                });


    var appender = iframebody.append(div).append(msgDiv);

    console.log(iframebody.find('.mceNonEditable').get(0)); //i am getting the object.

    iframebody.find('.mceNonEditable').on('keyup', function () {
        console.log('hi'); //not working!
    });

任何人都可以解释为什么这种方法不起作用吗?

1 个答案:

答案 0 :(得分:0)

根据Jquery官方网站find description

获取当前匹配元素集中每个元素的后代,由选择器,jQuery对象或元素过滤。

on methods description

将一个或多个事件的事件处理函数附加到所选元素。

由于on是按下或释放等事件,但find不是事件,所以

console.log('hi'); 

正在运作

我想如果你尝试这样的话

 iframebody.find('.mceNonEditable').trigger('keyup',function () {
        console.log('hi'); //not working!
    });

然后你可以得到你想要的结果