0

私はこのコードを持っています-

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()を.live()に置き換えるように指示されるたびに、画像の挿入を複製します。 bind()ですが、機能しません(私のコードではOKです)。提案をお願いします

4

2 に答える 2

1

まず第一に、あなたはなぜあなたは使ってみませんが、あなたのページがロードされたときに一度liveそれをしませんか?「イベントハンドラーは毎回バインドされるので使用する必要があります...」とあなたは言いますが、それは紛らわしいように聞こえます。を使用するため、イベントハンドラーは毎回バインドされますが、その逆ではありません。bindbind

それができない場合、迅速で汚い解決策は次のようになります。

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

はるかに優れた解決策(ここでも、なしlive)はhasEventListenerプラグインです。ドキュメントを読むか、JSFiddleでサンドボックスを試してみてください

于 2011-09-10T10:52:44.880 に答える
0

onchangeセクションの外側にインサートを移動して解決しました

于 2011-09-15T09:51:48.963 に答える