0

クリックして他のページに移動する画像を含むシンプルなメディアギャラリーがあります。また、ユーザーがメディアギャラリーの名前、説明を変更したり、写真を削除したりできる「編集」モードもあります。「編集」モードで、写真のデフォルトのクリックアクションを無効にします。複数の画像をクリックすると、それらを「選択」できます。次に、[キャンセル]または[OK]をクリックして購入すると、通常のデフォルトの画像クリックHREFが復元されます。次のコードは部分的に機能しますが、奇妙な動作をします。私がここで間違っていること、またはこれを達成するためのより良い方法についてのアイデアはありますか?

$(".editAlbumButton").click(function() {
    $("#editTools").show();
    $(".mediaClick").preventDefault();
    $(".mediaClick").toggle(function() {
        $(this).addClass('mediaSelectHighlight');
        }, function() {
        $(this).removeClass('mediaSelectHighlight');
    });
}); 

$(".cancelButton").click(function() {
    $(".mediaClick").removeClass('mediaSelectHighlight');
    $("#editTools").hide();
    $(".mediaClick"). ??? (); // I don't know how to "Restore" default click action here ?
}); 
4

2 に答える 2

0

たとえば編集可能なフラグを使用してみませんか。

var editable=false;
$(".editAlbumButton").click(function() {
    $("#editTools").show();
    editable=true;
    $(".mediaClick").toggle(function() {
        $(this).addClass('mediaSelectHighlight');
        }, function() {
        $(this).removeClass('mediaSelectHighlight');
    });
});
$(".cancelButton").click(function() {
    $(".mediaClick").removeClass('mediaSelectHighlight');
    $("#editTools").hide();
    editable=false;
});
$(".mediaClick").click(function() {
    if(editable){
        $(this).preventDefault();
        return;
    }
});
于 2012-09-06T23:34:00.233 に答える
0

アクティブなモードに応じて、イベントのバインドバインド解除を試してください。

$(".editAlbumButton").click(function() {
    $(".mediaclick").unbind("click", /*hanlder*/);
}
...
$(".cancelButton").click(function() {
   $(".mediaclick").bind("click", /*handler*/);
}
于 2012-09-06T23:21:37.533 に答える