我如何才能对点击CodeMirror-Hints应用预防Default()?

时间:2019-02-27 作者:Severin

如果我在codeMirror中点击WordPress自动补全器中的一个选项,整个字段将关闭。为了防止这种情况,我想将preventDefault添加到click事件中。

var cm = wp.codeEditor.initialize( options.field, editorSettings );
var editor = cm.codemirror;

jQuery(\'body\').hover(function(e){
          if(jQuery(\'ul.CodeMirror-hints\')){
            jQuery(\'ul.CodeMirror-hints\').mousedown(function(eH){
              eH.preventDefault();
            });
          }
        });

var editorSettings = {
        mode: \'css\',
        lineNumbers: true,
        indentUnit: 2,
        tabSize: 2,
        autoRefresh:true,
        autocorrect: true,
        autocapitalize: true,
        matchBrackets: true,
        autoCloseBrackets: true,
        lineWrapping: true,
        lint: true,
        gutters: [ \'CodeMirror-lint-markers\' ]
    }
自ul起。CodeMirror提示现在存储在body元素中,只有当CodeMirror提示提出建议时才会插入,我必须在body上生成一个事件。

body => <ul class="CodeMirror-hints"...</ul>
是否有更好的解决方案将preventFefault()添加到单击ul的事件中。代码镜像提示?

2 个回复
最合适的回答,由SO网友:mrben522 整理而成

活动代表团是您的朋友!这样,当代码运行时,元素就不必存在,函数就可以绑定到它。

jQuery(\'body\').on(\'click\', \'ul.CodeMirror-hints li\', function(e) {
    e.preventDefault();
});
更换click 具有mousedown 如果你需要的话

SO网友:Severin

这个解决方案并不漂亮,但它做了它应该做的。

jQuery(\'body\').hover(function(e){
          if( jQuery(\'ul.CodeMirror-hints li\').length > 0){
            jQuery(\'ul.CodeMirror-hints li\').mousedown(function(eH){
              eH.preventDefault();
            });
            jQuery(\'ul.CodeMirror-hints li\').click(function(ecH){
              ecH.preventDefault();
            });
          }

相关推荐

第一次提交时WP-EDITOR为空

我在一个简单的插件中使用wp编辑器,但我遇到了一个问题,第一次点击提交按钮时,数据库中的内容是空白的。<?php $editor_id = \'mycontent\'; wp_editor($content, $editor_id ); ?> 因此,我尝试使用以下内容提醒内容:if (j(\".wp-content-wrap\").hasClass(\"tmce-active\")){ alert(