【问题标题】:livequery keypress event实时查询按键事件
【发布时间】:2011-06-01 18:21:01
【问题描述】:

(我使用 jquery 中的 before() 函数将新的 <p> 元素附加到 div 层。

$('#AddParagraphButton').click(function() {
    $('#TheLayer').before('<p contentEditable='true'>Some text...</p>');    
});



这里我设置了keypress 函数来插入&lt;br&gt; 标签。

$('p').keypress(function(e){
    if(e.which == 13){
       e.preventDefault();  
       document.execCommand('insertHTML', false, '<br/>');
    }
});


在调用 append 函数并添加新的 &lt;p&gt; 之前,这可以正常工作(br 标记插入)。如何让 livequery 取消绑定 keypress 事件并再次绑定?


编辑:&lt;p&gt; 标签具有 contentEditable 属性。我这样做是因为 &lt;br&gt; 标签被包装在 div 中,我只想要 &lt;br&gt; 标签

【问题讨论】:

    标签: javascript jquery livequery execcommand


    【解决方案1】:

    您是否考虑过使用内置的live() 功能?..

    描述:为所有匹配当前选择器的元素添加一个事件处理程序,现在和将来。

    $('p').live("keypress", function(e){
        e.preventDefault();
          if(e.which == 13){
             document.execCommand('insertHTML', false, '<br/>');
        }
    });
    

    【讨论】:

    • 我忘记添加我正在使用 contentEditable。这个功能现在在我附加 html 之前禁用了所有关键事件
    • 我的错。我将 preventDefault() 方法放在禁用每个关键事件的 if() 语句之前。您的代码运行良好。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多