Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何"$(文档).ready();关于;框架;?_Javascript_Jquery_Html_Ajax - Fatal编程技术网

Javascript 如何"$(文档).ready();关于;框架;?

Javascript 如何"$(文档).ready();关于;框架;?,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我将包含一些小内容的页面命名为“frames”,我通过AJAX在特定div上多次加载这些页面,这些div也会在不同的地方多次显示 真实情况:我有一个“Reply”div,其中包含对某条消息的所有回复,还有一个“Reply”按钮,通过AJAX在div中加载一个php页面,其中包含回复输入和表单。当这个页面加载时,我需要通过javascript在这个输入上加载一个文本编辑器 我的问题是我在每个加载的页面上都使用了: <script>*Load text editor on inputs*

我将包含一些小内容的页面命名为“frames”,我通过AJAX在特定div上多次加载这些页面,这些div也会在不同的地方多次显示

真实情况:我有一个“Reply”div,其中包含对某条消息的所有回复,还有一个“Reply”按钮,通过AJAX在div中加载一个php页面,其中包含回复输入和表单。当这个页面加载时,我需要通过javascript在这个输入上加载一个文本编辑器

我的问题是我在每个加载的页面上都使用了

<script>*Load text editor on inputs*</script>
我的警报“'it didn get in here..”(它确实进入了此处…)”总是使用正确的Id触发,但在我加载第二页后,文本编辑器不会加载加载的第一页。这意味着只有最后加载的页面才能工作

更新:

再进行一些测试,我可以观察到它的行为如下:

我有3条打开回复表单的消息。 我打开#1消息并打开回复表单,文本编辑器被加载。 我打开#2消息,文本编辑器被加载,一切正常

当我返回到#1并再次关闭和打开回复表单时,文本编辑器不会加载。好啊所以它被覆盖了,对吗

我打开#3消息并打开回复表单,文本编辑器不再加载


在我第二次打开回复表单后,我打开的表单中没有一个得到文本编辑器,但我可以随心所欲地关闭和打开第二个表单,它工作正常。

在不知道如何调用它的情况下,我可以建议以下方法。它首先检查编辑器的脚本是否已加载(在本例中为jqueryui),如果未加载,则加载它

加载后,它还会调用函数来显示对话框,如果您单击另一个元素(调用相同的函数),它不会重新加载,只是直接调用“编辑器”,加载函数将div元素作为参数,该参数将添加到addeditorscript函数中(在这种情况下,作为this对象)

更新

我做了更新以使用tinymce。脚本应该放在当前jquery脚本所在的位置,div应该得到一个click事件,并且至少有一个惟一的id:)(它也可以是一个textarea),这对您有帮助吗

函数loadMe(divElement){
log(divElement.innerHTML);
if(divElement&&divElement.innerHTML.indexOf('Click to reply')){
divElement.innerHTML=“…正在加载,请稍候…”;
var callEditor=addEditorToScript.bind(divElement);
if($('#editorScript')。长度==0){
log('loadingjqueryui');
var scriptTag=document.createElement('script');
scriptTag.id='editorScript';
scriptTag.src=http://tinymce.cachefly.net/4.1/tinymce.min.js';
$(scriptTag).on('load',callEditor);
document.body.appendChild(scriptTag);
返回;
}
setTimeout(调用者,0);
}
}
函数addeditorscript(){
console.log(this);
log(参数);
tinymce.init({
选择器:“#”+this.id
});
}

洛勒姆

乱数假文

点击回复 德洛雷姆 某物

点击回复
定义时,您查看了HTML,检查了当前页面,还是使用右键单击菜单打开了源代码。检查实际输出应该包含scripttag,而源代码不应该(它是发送到浏览器的html的一部分)。在一个页面上多次重新加载同一脚本也会很麻烦,并且可能会破坏依赖于该脚本的代码(因为链接到该脚本的第一个脚本被覆盖或重置)。使用JQuery,您可以使用getScript(),在加载它时提供回调。您可以显示加载div的代码吗?它现在正在显示脚本,但由于它与文档中已有的脚本冲突,因此无法工作。我使用了一个简单的
$.ajax({success:function(html){$(div.html(html);}})
填充div。我在哪里使用getScript()sugestion?您的html包含scriptblock?(意思是,从服务器返回的html;))是的,当然。在我的HTML中,它有两个脚本,每个打开的选项卡对应一个脚本。当我加载另一个时,只有一个工作,其他的不工作。我认为这是我对类的引用,所以在加载时我将页面的编号添加到类中。例如:我在“input text”类上加载我的文本编辑器,所以我在“input-text2”类中添加了选项卡(不重复)的编号,然后加载它。但仍然不起作用。因此,我在这里问了一个问题,看看是否还有其他的方法冲突发生了,因为尽管我给每个文本区域指定了一个“Id”(添加到类名中的回复编号:),但我忘了删除其中的attr“Id”(类似:)元素的attr。我删除了元素的attr id,它可以工作。但是我应该把这段代码放在哪里呢?如果我把它放在.js文档中,它就不会被触发,因为我的页面是在.js加载之后加载的(当我加载.js文件时,元素不存在,它可能根本不存在)。如果我把它放在我的页面上,它不会与其他加载的页面产生同样的冲突吗?@VictorHugo你能编辑你的原始帖子,展示一些关于你当前反应的更精确的步骤吗?我建议loadMe应该在主页上,并被调用来加载编辑器。因为这样也会有目标div元素,所以可以使用这个元素创建编辑器脚本(而不是基于类)。但是你的问题有点抽象,我真的很难想象会出什么问题,或者哪里出了问题,展示一些代码:)我用一些代码和一些澄清编辑了我的问题,感谢way@VictorHugo我更新了我的回复(在我看到你上次的更新之前),我喜欢你的方法并修改了我的结构
<script>
jQuery(document).ready(function(){
    alert('it did get in here reply #<?php echo $this->uri->segment(3) ?>');

    load_tinymce(".tinymce<?php echo $this->uri->segment(3) ?>");

    jQuery('html, body').animate({scrollTop:999999999}, 'slow');
});

</script>  
<?php
        echo '<label>Reply*</label>';
        echo form_textarea(array('name'=>'reply-'.$text_add_itens, 'rows'=>'3',     'class'=>'form-control tinymce'.$this->uri->segment(3), 'id'=>'reply'), 
                '');

?>
function load_tinymce(where)
{
    tinymce.init({
        selector: where,
        theme: "modern",
        plugins: [
            "autolink lists link image hr anchor",
            "code",
            "media nonbreaking contextmenu directionality",
            ""
        ],
        toolbar1: "undo redo | bold italic underline bullist numlist outdent indent | link image",
        language: "pt_BR",
        document_base_url: url_base,
        relative_urls: true,  
        extended_valid_elements:"iframe[*],span[*],style[*]",
        content_css: url_base+"css/bootstrap.css",
        menubar:false,
        statusbar:false,
        forced_root_block : false,
    });         
}