0

次のコードを書き直して、最初のクリックでセレクター要素の画像 src を変更するだけでなく、2 回目のクリックで画像 src を images/spacer.gif に変更し、その後のクリックがループするようにしようとしています。画像 src を追加し、それをスペーサーに置き換えます。この機能はラジオボタンと(イベント)を使うので、.toggleはなるべく避けたい。以下のコード ブロックは、最初の関数に対してのみ機能します。

    $('.item-button').click(function(event) {
    var layerID = $(this).attr('data-layer');
    var itemID = $(this).attr('data-item');
    var selector = '#layer-' + layerID;

          //an itemID of 0 means the item doesn't exist. 
    if (itemID == 0) {
        $('#layer-' + layerID).attr('src', 'images/spacer.gif');
    } else {
        var imageSrc = $(this).parent().find('img').attr('id');
        $(selector).attr('src', imageSrc);
    }
    },
   //a second nonfunctional function to change the src to the spacer in case the same radio button is clicked twice. 
    function(){
      $('#layer-' + layerID).attr('src', 'images/spacer.gif');
      });
4

1 に答える 1

0

コードを見る代わりに、カスタマイズできるスニペットを提供します。

//set initial status
$('element').data('status','not_clicked');

$('element').click(function(){
    if( $(this).data('status') == 'clicked' ) {
        $(this).data('status','not_clicked');

        //your code in case of second click
    } else {
        $(this).data('status','clicked');

        //your code in case of first click
    }
});

機能:

  1. 初期状態を設定します -not_clicked
  2. クリックの場合:
    • 現在のステータスが(リセット)clickedに設定されnot_clicked、スクリプトを実行する場合
    • else - ステータスを変更しclickedてスクリプトを実行します。
于 2012-07-15T19:58:55.190 に答える