JQuery .bind() 正确格式
我有这段代码 -
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() 因为每次模式打开时更改事件处理程序都会绑定,因此每次被告知替换 .live( 时我都会插入重复图像) 和.bind() 但它不起作用(请在我的代码中提出建议)。
I have this code -
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);
} );
}
} );
which adds a new button to a wym editor. This opens a modal which contains images, the idea is to select an image and insert into the wym editor. Works if i use jQuery('.imgname').live('change',function(){ ...
but not if I use jQuery('.imgname').bind('change',function(){
problem is I have to use .bind() because the change event handler gets bound every time the modal opens and so I dupliacte image inserts each time I was told to replace .live() with .bind() but it doesn't work (OK in my code). Suggestions please
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
首先:为什么不使用
live
,而是在页面加载时使用一次?你说“我必须使用bind
因为事件处理程序每次都会被绑定......”但这听起来令人困惑。每次因为您使用bind
,事件处理程序都会被绑定,而不是相反。如果做不到这一点,一个快速而肮脏的解决方案将是:
一个更好的解决方案(同样,没有
live
)将是hasEventListener
插件。阅读文档,或使用 JSFiddle 上的沙箱。First of all: why don't you use
live
but do it once when your page loads? You say "I have to usebind
because the event handler gets bound every time..." but that sounds confusing. The event handler gets bound every time because you usebind
, not the other way around.Failing that, a quick and dirty solution would be:
A much better solution (again, without
live
) would be thehasEventListener
plugin. Read the documentation, or play with its sandbox on JSFiddle.通过将插入移到 onchange 部分之外解决了这个问题
Solved it by moving the insert outside of the onchange section