0

環境

複数の行に 3 つのボタンがあります (編集、削除、登録解除)。

この 3 つのボタンは 3 つの異なるクラスですが、クリック ハンドラーは同じです。

このクラスは、ajax 呼び出しに使用する 3 つのアクションの名前と同じです。

したがって、クリック ハンドラーでは、クリックされたセレクターの特定の部分を取得する必要があります。

現在、私が書いた次のコードを使用しています

質問

2 ~ 3 行で、 class=action system を使用して、問題を解決するより良い方法はありますか?

そのようなものを探していますが、見つかりませんでした:

$.post(url + '&action=' + classClickedIntoTheSelector.replace(/\./g, '') ...

コード + JSFiddle

<button class="actionLink edit btn">Éditer</button>
<button class="actionLink delete btn btn-warning">Supprimer</button>​
$('.edit, .delete').click(function () {
    var a = $('.this, .that').selector.replace(/\./g, '').split(', ');
    var b = $(this).attr('class').split(' ');
    var action;
    
    for (var i = 0; i < a.length; i++) {
        for (var j = 0; j < b.length; j++) {
            action = a[i] == b[j] ? a[i] : action;
        }            
    }
    
    $.post(url + '&action=' + action...
});​
4

3 に答える 3

2

これを試して...

var l = function (x) { return console.log(x); };

$('.this, .that').click(function () {
    var $this = $(this);        
    if ($this.hasClass("this")) {
        l("this");
    }
    if ($this.hasClass("that")) {
        l("that");
    }
});​

http://jsfiddle.net/3wj3R/2/

于 2012-09-05T13:37:36.347 に答える
0
if($(this).is('.this')) ...
if($(this).is('.that')) ...
于 2012-09-05T13:33:45.053 に答える
0

最後に、ジェネリック クラスとデータ属性を使用しました。

<button class="actionLink btn" data-action="edit">Éditer</button>
<button class="actionLink btn" data-action="delete">Supprimer</button>​
$j('.actionLink').click(function () {
    $.post(url + '&action=' + $(this).data('action'));
});
于 2012-09-13T08:07:06.673 に答える