2016-03-31 6 views
1

実行後にリセットしようとしています。ここでjQueryが呼び出された後にone()メソッドをリセットしました

は私のhtmlです:ここでは

<textarea name="comment"> Write comment...</textarea> 
<div id="buttons" style="display:none"> 
    <button id="submit">Submit</button> 
    <button id="cancel"></button> 
</div> 

は、WYSIWYGにテキスト領域を変換最初の部分である:

$('textarea[name=comment]').one("click", function() { 
    $(this).editor(); 
    $("#buttons").show(); 
}); 

、ここではすべてリセットされます一部です:

$('#cancel').click(function() { 
    $('textarea[name=comment]').editor('destroy'); 
    $("#buttons").hide(); 
}); 

最初の部分は正常に動作し、textareaはエディタに変換され、buttonsは2番目の部分は、エディタを削除してbuttonsを隠しますが、textareaを再びクリックすると、何も何も起こりませんone()

+0

もう一度 '.one()'を呼び出す必要があります。名前が意味するように、それは一度だけ発火し、それから永遠に消える。 – Barmar

答えて

2

複数回発射させたい場合は.one()を使用しないでください。ビヘイビアを条件付きにするには、明示的にコードに記述します。

$('textarea[name=comment]').on("click", function() { 
    var editor_disabled = $(this).data("editor-disabled"); 
    if (!editor_disabled) { 
     $(this).editor(); 
     $("#buttons").show(); 
     $(this).data("editor-disabled", true); // disable until we cancel 
    } 
}); 

$('#cancel').click(function() { 
    $('textarea[name=comment]').editor('destroy'); 
    $("#buttons").hide(); 
    $('textarea[name=comment]').data("editor-disabled", false); // re-enable 
}); 
+0

Firebugでエラーが発生しました:ReferenceError:enable_editorが定義されていません – Alko

+0

'editor_disabled'にする必要があります。私は編集時にそれを修正するのを忘れてしまった。 – Barmar

+0

はい、私はそれを最後の行$(this).data( "editor-disabled"、false)としました。 // re-enableは$( 'textarea [name = comment]')でなければなりません。data( "editor-disabled"、false); //再度有効にしてください – Alko

1

one()火災は一度しか消えないので、キャンセルクリックハンドラーで再度イベントに登録する必要があります。あなた自身の繰り返しを避けるために関数でラップすることができます

function registerCommentClick() { 
    $('textarea[name=comment]').one("click", function() { 
     $(this).editor(); 
     $("#buttons").show(); 
    }); 
} 

registerCommentClick(); 

$('#cancel').click(function() { 
    $('textarea[name=comment]').editor('destroy'); 
    $("#buttons").hide(); 

    registerCommentClick(); 
}); 

また、one()を使用する代わりにフラグを使用するか、エディタ/あなたの#buttonsの可視性の存在をチェックしません。

関連する問題