2013-11-12 2 views
1

В настоящее время у меня есть кнопка, которая меняет свой текст из Паузы на Возобновление при нажатии на нее. Я использую jQuery и переключаю для этого:Переключение между двумя функциями

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

Все это работает. У меня также есть 2 функции:

function pauseTimer() 
function startTimer() 

Как «интегрировать» эти две функции в код переключения? Поэтому, когда я нажимаю Pause, он будет переключать текст на Возобновление, а также использовать функцию pauseTimer(), и если я снова нажму кнопку, текст изменится на Пауза, а также будет использоваться StartTimer()?

Благодаря

+0

ли вы читать документы? http://api.jquery.com/toggle/ – gearsdigital

+1

Просто превратите тройной оператор в нормальное условие 'if', содержащее два оператора. –

ответ

1

Если я полностью не неправильно ваш вопрос, это должно сделать это:

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

Спасибо всем, я выбрал этот, подходящий мне лучший – Maurice

1

Что-то вроде этого?

var doStuff = function(callback, text){ 
    callback(); 
    return text; 
} 
$(this).html($(this).html() == "Pause" ? doStuff(startTimer, "Resume") : doStuff(StartTimer, "Pause")); 
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; 
    }); 
}); 
+0

использовать шахту в сценариях, где вам нужно получить доступ к состоянию таймера в блоках кода за пределами оператора if – Plato

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 для проверки текущего состояния аудио тега, а затем переключить его состояние в play или pause и в то же время. Он будет работать в кросс-браузере.

1

Вы можете использовать метод window здесь нравится:

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

будет работать. Вы должны изменить html-содержимое элемента на «Пуск» или «Пауза» в функциях, чтобы функция запускалась альтернативно в соответствии с html элемента.

1

Вы можете использовать JQuery виден метод:

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

Dan

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

1
$(document).ready(function() { 
$("#pause").click(function(pauseTimer(),StartTimer()) { 
    $("td").toggle(); 
    $(this).html($(this).html() == "Pause" ? "Resume" : "Pause"); 
}); 
}); 
Смежные вопросы