首页 新闻 会员 周边

mvc4使用@Ajax.ActionLink刷新div后,kindeditor无法使用,怎么解决?

0
悬赏园豆:30 [已解决问题] 解决于 2013-12-09 22:36

我使用@Ajax.ActionLink刷新某个div,用来载入其他页面,当我载入某个含有kindeditor编辑器的页面的时候,kindeditor无法显示。

调用kindeditor的代码

@Ajax.ActionLink( “text”,  
                         “action”,  
                         “controller”,
                         new AjaxOptions{  
                             UpdateTargetId = “div”, 
                    })  

kindeditor页面的代码

<script src="@Url.Content("~/Scripts/kindeditor/kindeditor.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/kindeditor/lang/zh_CN.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.js")" type="text/javascript"></script>
<link href="@Url.Content("~/Content/Kindeditor/default/default.css")" rel="stylesheet" type="text/css" />

<script type="text/javascript">

    var editor;
            
    KindEditor.ready(function (K) {
        editor = K.create('#kindeditor', {

        })
    });
</script>
<div id="ke-div">
    <form>
        <textarea id="kindeditor" name="text" cols="100" ></textarea>
        <input type="submit" />
    </form>
</div>

请问怎么解决?

demo:下载地址,点击我

Ten_cnblogs的主页 Ten_cnblogs | 初学一级 | 园豆:21
提问于:2013-12-08 12:20
< >
分享
最佳答案
0

看看载入后,遇到有脚本错误吗?

收获园豆:30
幻天芒 | 高人七级 |园豆:37175 | 2013-12-08 18:02

没有,脚本完全能执行。

Ten_cnblogs | 园豆:21 (初学一级) | 2013-12-08 18:04

@Ten_cnblogs: 查看F12生成的代码是怎样的?

幻天芒 | 园豆:37175 (高人七级) | 2013-12-08 18:11

@幻天芒: 本来有添加多几个div的,现在没有。

Ten_cnblogs | 园豆:21 (初学一级) | 2013-12-08 19:10

@Ten_cnblogs: 用Chrome F12断点下脚本吧,呵呵~

幻天芒 | 园豆:37175 (高人七级) | 2013-12-08 19:46

@幻天芒: 有断点了,一直执行到尾,没问题。。。

Ten_cnblogs | 园豆:21 (初学一级) | 2013-12-08 20:47

@Ten_cnblogs: 检查下你引用的库,是不是用了多次,还有将Kindeidtor的页面脚本放在末尾。或者,你可以上传个demo,方便分析。

幻天芒 | 园豆:37175 (高人七级) | 2013-12-08 21:56

@幻天芒: 我上传了个demo了,http://pan.baidu.com/s/1GfWTP

Ten_cnblogs | 园豆:21 (初学一级) | 2013-12-09 11:49

@Ten_cnblogs: 恩,待会看下~

幻天芒 | 园豆:37175 (高人七级) | 2013-12-09 20:12

@Ten_cnblogs: 

把Eidtor修改为如下即可,经测试,是KindEditor.rendy未执行。

<div id="ke-div">
    <form>
        <textarea id="kindeditor" name="text" cols="100" ></textarea>
        <input type="submit" />
    </form>
</div>

<script type="text/javascript">
    var editor;
    editor = KindEditor.create('#kindeditor', {
    });
</script>
幻天芒 | 园豆:37175 (高人七级) | 2013-12-09 21:56

@幻天芒: 可以了,谢谢啊。我还想问下你知道div跟iframe有什么区别吗?我把那个切换的div改成iframe后也能执行,和为什么KindEditor.ready()不能执行?

Ten_cnblogs | 园豆:21 (初学一级) | 2013-12-09 22:35

@Ten_cnblogs: div和iframe都算是容器吧,不过div算是当前页,iframe则是跨页面了。更具体我也说不清楚了。KindEditor.ready()看看http://kindeditor.net/docs/event.html#k-ready-fn

幻天芒 | 园豆:37175 (高人七级) | 2013-12-10 23:34

@幻天芒: KindEditor.ready(),看了还是不懂,能解释下吗?

Ten_cnblogs | 园豆:21 (初学一级) | 2013-12-10 23:48

@Ten_cnblogs: 我也不是很明白,(^.^),我的理解是ajax请求过来的数据,没有加入dom树,导致ready无法执行。

幻天芒 | 园豆:37175 (高人七级) | 2013-12-12 00:19
其他回答(1)
0

是不是加载时机不对啊!在页面加载完成之后,通过谁触发(比如button单击事件)

$(function(){
$("#btnCreate").click(function(){
       KindEditor.create('textarea[name="content"]');
    });
}); 
秋壶冰月 | 园豆:5903 (大侠五级) | 2013-12-08 13:07

不是哦,如果不使用@Ajax.ActionLink的话可以正常打开的,我刚刚修改了问题,贴上完整代码了。

支持(0) 反对(0) Ten_cnblogs | 园豆:21 (初学一级) | 2013-12-08 13:42

@Ten_cnblogs: 1.下面的div的id,和上面的UpdateTargetId不是同一个,

2.写单独的方法,在@ajax.ActionLink(),成功后调用

function afterLoadTextarea() {
            KindEditor.create('textarea[name="text"]');
        }
 @Ajax.ActionLink("danji", "Index", new AjaxOptions() { HttpMethod = "post", OnSuccess = "afterLoadTextarea", UpdateTargetId = "ke-div" })
支持(0) 反对(0) 秋壶冰月 | 园豆:5903 (大侠五级) | 2013-12-08 14:37

@秋壶冰月: 这个div没问题的,在调用kindeditor页面的页面是还有一个div的。我在做的网站这个@ajax.ActionLink()是运行时生成的,单独的方法无法满足我的需求。。。还有别的方法吗?

支持(0) 反对(0) Ten_cnblogs | 园豆:21 (初学一级) | 2013-12-08 14:52

@Ten_cnblogs:  OnSuccess = "afterLoadTextarea",就是执行成功后,调用afterLoadTextarea方法,给textarea加上编辑功能,这样能保证加载的时机,afterLoadTextarea方法放到script中就行

支持(0) 反对(0) 秋壶冰月 | 园豆:5903 (大侠五级) | 2013-12-08 14:59

@秋壶冰月: 我刚刚试了,可这样实在无法满足我的需求。。。刚刚调试了下发现KindEditor.ready()会执行,可是为什么没有效果?

支持(0) 反对(0) Ten_cnblogs | 园豆:21 (初学一级) | 2013-12-08 17:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册