Jquery动态元素绑定

时间:2016-01-21 03:51:45

标签: javascript jquery

不久前,我发布了一个关于此的问题,解决方法是将body添加为像这样的父级;

$("#registerF,body").on("change", "input,  select", function () {});

#registerF元素已动态加载,并向其添加正文修复了问题。

但是我现在面临同样的问题,并且添加正文无效。

我正在开发一个使用BBcode的文本编辑器,就像StackOverflow上的这个一样。加载该页面时,一切正常。但是,当我动态加载它时,它无法正常工作,并且添加正文无效。

以下是第一部作为例子:

$("#textEdit").on("focus", function () {
    var text = document.getElementById('textEdit');
    text.onkeyup = text.onkeypress = function () {
        preview = this.value;
        preview = bbToHtml(preview);
        document.getElementById('editorPreview').innerHTML = preview;
    }
});    

我尝试了几件事:

$("#textEdit, body").on("focus", function () {

$("body > #textEdit").on("focus", function () {

在这种情况下,没有任何工作。我想知道为什么它不适合这个,但它适用于我的表单registerF元素。

修改

我认为导致问题的原因是this声明。

其中大部分都有效,但这一部分:

$(document).click('#textEdit,.editBout', function (e) {
    //$("#editToolBar,.editBout").click(function (e) { <-------was
    alert('clicked');   <------------get triggered even if i dont click
    e.preventDefault();
    e.stopPropagation();
    console.log(this); <-----------------------------return #document
    var style = ($(this).attr("data-style"));  <---- So this is not working

所以我没有把它传递给元素:

 var style = ($('#textEdit,.editBout').attr("data-style"));  <----Work but not dynamiccaly

所以它的工作,但如果我动态加载仍然无法正常工作。点击不会被触发。

0 个答案:

没有答案