JQuery .bind()格式正确

时间:2011-09-10 09:01:38

标签: jquery bind wymeditor

我有这段代码 -

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()但是它不起作用(我的代码中没问题)。建议请

2 个答案:

答案 0 :(得分:1)

首先:为什么不在页面加载时使用live一次 你说“我必须使用bind,因为事件处理程序每​​次都被绑定......”但这听起来令人困惑。每次都会绑定事件处理程序,因为使用bind,而不是相反。

如果做不到这一点,那么快速而肮脏的解决方案就是:

$(".imgname").unbind("change").bind("change", function () {
    // ...
});

更好的解决方案(再次,没有live)将成为hasEventListener插件。阅读文档,或使用其sandbox on JSFiddle

答案 1 :(得分:0)

通过将插件移到更换部分

之外解决了这个问题