在两个函数之间切换

时间:2013-11-12 14:14:47

标签: javascript jquery toggle

目前我有一个按钮,可以在单击时将其文本从暂停更改为恢复。我使用jQuery并为此进行切换:

$(document).ready(function() {
    $("#pause").click(function() {
      $("td").toggle();
      $(this).html($(this).html() == "Pause" ? "Resume" : "Pause");
    });
});

这一切都有效。我还有两个功能:

function pauseTimer() 
function startTimer()

如何将这两个功能“集成”到我的切换代码中?因此,当我点击Pause时,它会将文本切换为Resume AND并使用函数pauseTimer(),如果我再次点击按钮,文本将变回Pause并使用StartTimer()

由于

9 个答案:

答案 0 :(得分:2)

$(this).html() == "Pause" ? pauseTimer() : startTimer();

会工作吗?你必须在函数中将元素的html内容更改为Start或Pause,以便函数根据元素的html交替运行。

答案 1 :(得分:1)

除非我完全误解了你的问题,否则应该这样做:

$("#pause").click(function() {
  $("td").toggle();
  if($(this).html() == "Pause")
  {
      $(this).html("Resume");
      pauseTimer();
  }else{
      $(this).html("Pause");
      startTimer();
  }
});

答案 2 :(得分:1)

这样的东西?

var doStuff = function(callback, text){
    callback();
    return text;
}
$(this).html($(this).html() == "Pause" ? doStuff(startTimer, "Resume") : doStuff(StartTimer, "Pause"));

答案 3 :(得分:1)

var globalTimerPaused = false;
$(document).ready(function() {
    $("#pause").click(function() {
      $("td").toggle();
      $(this).html($(this).html() == "Pause" ? "Resume" : "Pause");
      if(!globalTimerPaused){ pauseTimer() } else { startTimer() };
      globalTimerPaused = !globalTimerPaused;
    });
});

答案 4 :(得分:1)

试试这个

$('selector').click(function () { // on click event
  var song = $('theaudiotag');
  if(song.paused) { // if song is paused
     $(this).play(); // play it
     $(this).html('Pause'); // change text
  } else { // otherwise
     $(this).pause(); // pause it
     $(this).html('Play'); // change text
  }
}

这会使用jQuery API来检查音频标记的当前状态,然后将其状态切换为playpause并同时进行。它将跨浏览器工作。

答案 5 :(得分:1)

您可以在此处使用window方法,例如:

$("#pause").click(function () {
    $("td").toggle();
    $(this).html($(this).html() == "Pause" ? "Resume" : "Pause");
    window[$(this).html() === "Resume" ? "pauseTimer" : "startTimer"]();
});

答案 6 :(得分:1)

您可以使用jQuery是可见的方法:

if ($('td').is(":visible"))
{
pauseTimer();
}
else
{
startTimer()
}

答案 7 :(得分:1)

另一个选择是执行以下操作。

//jQuery 1.8 toggle replacement
$.fn.toggleClick = function(){
    var methods = arguments,
        count = methods.length;
    return this.each(function(i, item){
        var index = 0;
        $(item).click(function(){
            return methods[index++ % count].apply(this,arguments);
        });
    });
};

function startTime() {
    $("td").toggle();
    $(this).val("Start");
}

function pauseTime() {
    $("td").toggle();
    $(this).val("Pause");
}

$("#clickme").toggleClick(startTime,pauseTime);

JSFiddle

答案 8 :(得分:1)

$(document).ready(function() {
$("#pause").click(function(pauseTimer(),StartTimer()) {
  $("td").toggle();
  $(this).html($(this).html() == "Pause" ? "Resume" : "Pause");
});
});