如何只运行一次功能?我读到了关于jquery .one但它似乎只适用于点击功能。我需要我的音频播放功能才能激活一次,否则当用户再次点击同一链接时我有两个音频播放器。
我该怎么做?这是我需要运行一次的代码:
$(function() {
$('audio').audioPlayer();
});
这里是完整的代码:
$('ul li:nth-child(2)').click(function(e) {;
e.preventDefault();
link1.reverse()
link2.reverse()
link3.reverse()
$('#div').uncomment( /* recurse */ true);
setTimeout(function() {
link4.play()
$(function() {
$('audio').audioPlayer();
});
picturefill({
reevaluate: true
});
},
答案 0 :(得分:-1)
您可以简单地使用变量来跟踪它是否已被执行。并且你不需要setTimeout函数中的$(function(){...},因为这个绑定已经在DOM准备好之后创建了。
E.g。
HTML:
<ul>
<li>test</li>
<li>click me</li>
<li>test</li>
</ul>
JS:
var hasPlayed = false;
$(function () {
$('ul li:nth-child(2)').click(function (e) {;
e.preventDefault();
link1.reverse();
link2.reverse();
link3.reverse();
$('#div').uncomment( /* recurse */ true);
if (!hasPlayed) {
hasPlayed = true;
setTimeout(function () {
link4.play();
$('audio').audioPlayer();
picturefill({
reevaluate: true
});
}, 1000);
}
});
});
答案 1 :(得分:-2)
尝试使用数据属性,
var playAudio = function() {
if ($('.audio').data('once') != true) {
$('.audio').append('Once'); // replace with $('audio').audioPlayer();
$('.audio').data('once', true)
}
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="audio"></div>
<a href="" onClick="playAudio(); return false;">Click Me</a>
答案 2 :(得分:-3)
您可以使用保护条件。我对这个audioPlayer()
并不熟悉,但是如果有办法提出问题&#34;它是否正在播放&#34;你可以做到
if (!audioPlayer.isPlaying()) {
$('audio').audioPlayer();
}
否则你可以做类似
的事情//Outside the click handler
var isFirstRun = true;
...
//Inside the click handler
if (isFirstRun) {
isFirstRun = false;
$('audio').audioPlayer();
}