0

ID が動的に変化するリスト要素がいくつかあります。次に、この ID を他の要素にクラスとして 1 つずつ付与します。だから、これは私のコードです:

$('#rounded_items li').one({click: function(){
    $('#back_button').addClass(this.id);
}});

#back_buttonからクラス 1、2、3、4 を受け取ります#rounded_items li。から最後のクラスを取得して、クリックback_buttonして渡すにはどうすればよいですか。#rounded_items

このクラスを受け取った要素から最後のクラスを返すことは可能ですか?

4

3 に答える 3

1

多分あなたはそれをデータとして保存することができます

$('#rounded_items li').one('click', function(){
    var classes = $('#back_button').attr('class').split(/\s+/);
    var last = classes[classes.length-1];
    $.data($('#back_button')[0],'lastclass',last);
    $('#back_button').addClass(this.id);
});

$('#back_button').click(function(){
    var lastclass = $.data($('#back_button')[0],'lastclass');
    $('#rounded_items').addClass(lastclass);
    var classes = $('#back_button').attr('class').split(/\s+/);
    $.data($('#back_button')[0],'lastclass',classes[classes.length-3]);
    $('#back_button').removeClass(classes[classes.length-1]);
});

これを試すこともできます:

   $('#back_button').click(function(){
        var classes = $('#back_button').attr('class').split(/\s+/);
        $('#rounded_items').addClass(classes[classes.length-2]);
        $('#back_button').removeClass(classes[classes.length-1]);
    });
于 2012-08-27T11:23:55.950 に答える
0

クラス属性ではなく、配列を使用して ID を格納してください。

var stack = [];
$('#rounded_items li').one('click',function(){
    stack.push(this.id);
});
$('#back_button').click(function(){
    $('#rounded_items').setClass(stack.pop());
});
于 2012-08-27T11:25:11.153 に答える
0

あなたのクラスは、正当な CSS 識別子ではないため、スタイルを設定するために実際には使用されていないと思います。状態を保存するだけの場合は、次を使用します.data

var $back = $('#back_button');

$back.data('state', []);                   // empty array to store state

$('#rounded_items li').one({click: function() {
    $back.data('state').push(this);        // store clicked element
});

$back.on('click', function() {
    var elem = $back.date('state').pop();  // retrieve last clicked element
    if (elem) {
        // do something with elem...
    }
});

コードがすべて同じレキシカル スコープ内にある場合は、ローカル配列を使用して、を使用せずに状態を格納できます.data()

于 2012-08-27T11:32:13.720 に答える