切换而不使用.toggle

时间:2012-07-15 19:33:09

标签: jquery

我正在寻找重写以下代码,以便第一次单击时只需更改选择器元素的图像src,第二次单击将更改图像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');
      });

1 个答案:

答案 0 :(得分: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并运行脚本。