你好我有这个html结构:
<div id="media1368131383" data-date="1368131383" class="gauche media" style="">
<table>
<tbody>
<tr>
<td valign="top" style="vertical-align:top !important;padding-right:7px;">
<a href="http://www.mupiz.com/johnwatsonmusic" target="_blank">
<img src="http://www.mupiz.com/37038/picture?type=square" width="44">
</a>
</td>
<td class="dcom vidCustomD" style="width:450px">
<a href="http://www.mupiz.com/johnwatsonmusic" target="_blank">John, Watson</a> a ajouté une nouvelle chanson
<br>
<a href="http://www.mupiz.com/johnwatsonmusic/dans-un-roman">«Dans un roman»</a>
<br>
<span class="media_date gris petit">il y a environ 20 jours</span>
</td>
<td align="right">
<div class="playerMedia" data-url="http://www.mupiz.com/mp3/37038/mp3_87526.mp3" data-id="mp3_87526.mp3">Dans un roman</div>
</td>
</tr>
</tbody>
</table>
<br>
</div>
我已经附加了一个事件点击.playerMedia,但它被执行了两次。但是当.playerMedia不在桌面上时,它会执行一次,
Js(完美的工作)
function InlinePlayer() {
$(".playerMedia").each(function () {
var nom = $(this).attr("data-id");
nom = soundManager.createSound({
id: $(this).attr("data-id"),
url: $(this).attr("data-url")
});
$(this).live('click', function (e) {
if (!$(this).hasClass("sm2_playing")) {
nom.play();
$(this).addClass("sm2_playing");
} else {
$(this).removeClass("sm2_playing");
}
debug("1 time");
e.stopPropagation();
return false;
});
});
}
有什么想法吗?
答案 0 :(得分:0)
您的InlinePlayer功能正常运行。最可能的问题是你将它调用两次而不是一次,将点击处理程序连接两次。最好的解决方案是不要多次调用InlinePlayer(),但使用全局变量的快速而肮脏的解决方案如下所示。
// global boolean that determines if InlinePlayer has already been called:
var inlinePlayerCalled = false;
/*
* your code...
*/
function InlinePlayer() {
// check if InlinePlayer has already been called
// if it has not, then mark it as called.
if(inlinePlayerCalled) {
inlinePlayerCalled = true;
return false;
}
...
}