我有这段代码 -
jQuery('.wymeditor').wymeditor( {
html: '<p>Hello, World!<\/p>',
postInit: function(wym) {
var html = "<li class='wym_tools_newbutton'>"
+ "<a name='NewButton' href='#'"
+ " style='background-image:"
+ " url(js/wymeditor/img/media.png);'"
+ " title='Insert an image' >"
+ "</a></li>";
jQuery(wym._box).find(wym._options.toolsSelector + wym._options.toolsListSelector).append(html);
jQuery(wym._box).find('li.wym_tools_newbutton a').click(function() {
jQuery('#modal').show().css( { 'left': (winW-980)/2+'px', 'top': '100px' } ).load('admin_list_media.php');
jQuery('.imgname').bind('change',function(){
alert('123');
var InsertImg = '#'+jQuery(this).attr('id');
wym.insert('<img src="uploads/'+jQuery(InsertImg).val()+'" />');
jQuery('#modal').empty().hide();
});
return(false);
} );
}
} );
为wym编辑器添加了一个新按钮。这将打开一个包含图像的模态,其目的是选择一个图像并插入到wym编辑器中。如果我使用jQuery('.imgname').live('change',function(){ ...
但是如果我使用jQuery('.imgname').bind('change',function(){
问题则无法使用。我必须使用.bind(),因为每次模态打开时更改事件处理程序都会被绑定,所以每次我都重复插入图像被告知用.bind()替换.live()但是它不起作用(我的代码中没问题)。建议请
答案 0 :(得分:1)
首先:为什么不在页面加载时使用live
但一次 你说“我必须使用bind
,因为事件处理程序每次都被绑定......”但这听起来令人困惑。每次都会绑定事件处理程序,因为使用bind
,而不是相反。
如果做不到这一点,那么快速而肮脏的解决方案就是:
$(".imgname").unbind("change").bind("change", function () {
// ...
});
更好的解决方案(再次,没有live
)将成为hasEventListener
插件。阅读文档,或使用其sandbox on JSFiddle。
答案 1 :(得分:0)
通过将插件移到更换部分
之外解决了这个问题