我决定在项目中使用NicEdit,因为它很轻。
所以,现在我的页面中有一个可变数量的实例,在点击时加载并在编辑器模糊中删除。
我需要知道如何取消绑定此组件中的事件。我试图手动取消绑定,但我不明白它们的链接位置!
$('.container').bind('click', function(){
var _form = $(this).parentsUntil('form').parent();
var textarea = _form.find('textarea.edit');
var ta_id = textarea.attr('id');
var ed = new nicEditor(niceditOptions).panelInstance(ta_id);
// Show Preview and update textarea and so on
ed.addEvent('blur', function() {
var _ed = nicEditors.findEditor(ta_id);
var ev_type, evt, events = this.eventList;
for (ev_type in events){
for (evt in ev_type){
if (this.removeEventListener){
this.removeEventListener(ev_type, events[ev_type][evt]);
}
else {
this.detachEvent('on' + ev_type, events[ev_type][evt]);
}
}
}
this.removeInstance(ta_id);
});
});
非常感谢!的Davide。
答案 0 :(得分:0)
有可能采用其他方式来解决您的解决方案,但在这种情况下,我更喜欢使用一个版本的nicEditor面板并绑定所有WYSIWYG实例。原因是我觉得它稍微整洁一点。我会假设您知道如何bind one editor to multiple editable instances。
在加载时,我的HTML可能看起来像这样:
<div id="instance1">text</div>
...
<div id="instance2">text</div>
...
<div id="myNicPanel" style="display:none;position:relative;"></div>
因此,一旦页面完成了加载循环,我应该有两个可编辑区域和一个隐藏编辑器。然后,我将使用以下jQuery重新定位并在选择实例进行编辑时显示编辑器:
$('#instance1 , #instance2').click(function () {
//Reposition the editor to just above the selected instance
$('#myNicPanel').css({
top: $(this).position().top,
left: $(this).position().left,
display: 'block',
width: $(this).width() - 2 //manual adjustment,
position: 'absolute'
});
//Make the width of the editor equal to that of the instance
$('#myNicPanel').css({
top: $(this).position().top - $('#myNicPanel').height()
});
});
您当然已经在此之前已经启动了编辑器和实例,如果您还想让编辑器再次隐藏模糊,您可以将hide()
函数附加到nicEditor events之一}。