不久前,我发布了一个关于此的问题,解决方法是将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
所以它的工作,但如果我动态加载仍然无法正常工作。点击不会被触发。