0

我需要此代码在执行后再次运行$('.mp3').show();

$('.mp3').click(function() {
    $(this).toggle(function() {
        $('object').remove();
        $('.mp3-0').show();
    });
});

$('.mp3-0').click(function() {
    $(this).toggle(function() {
        $('#mp3obj').replaceWith('<object width="0" height="0"> <param name="src" value="musicasite.mp3"> <param name="autoplay" value="false"> <param name="controller" value="true"> <param name="bgcolor" value="#FFFFFF"> <embed src="musicasite.mp3" autostart="false" loop="false" width="0" height="0" controller="true" bgcolor="#FFFFFF"></embed> </object>');
        $('.mp3').show();
    });
});​

这整个片段为我做的是当用户请求时从网站上删除一首歌曲,但如果这个用户想要它,那么音乐会再次播放。

但是,在代码运行了这么长时间之后,它就停止了工作。

我需要的是:需要将整个 HTML 文件设置为单击按钮并运行代码之前的状态。

- - - 编辑 - - -

可以在这里看到一个例子:http: //dev.webtoad.com.br/toquedemagica/2012/
该页面是巴西葡萄牙语,但如果你点击“Parar música”和“Tocar música”,你可以看到我有什么迄今取得。

4

1 回答 1

2

你犯了两个大错误:

1.您没有使用向右切换。您只想切换按钮可见性而不是按钮行为。那应该是$(this).toggle()切换功能之外的其余操作。当您认为单击两个不同的按钮时,使用切换甚至没有多大意义,因为它可能会让您陷入意外的显示/隐藏行为。

2..mp3-0单击(第二次单击)上,您要(重新)将<object>您在上一次单击中删除的内容添加回内部#mp3obj,而不是替换它。这就是代码只运行 3 次点击的原因;

STOP - 删除<object>.

START - 替换#mp3obj<object>.

停止 -<object>再次删除。

开始 - ...找不到#mp3obj替换<object>(你替换了它!) -功能停止工作......

试试这个:

$('.mp3').click(function() {
    $(this).hide();
    $('object').remove();
    $('.mp3-0').show();
});

$('.mp3-0').click(function() {
    $(this).hide();
    $('#mp3obj').html('<object width="0" height="0"> <param name="src" value="musicasite.mp3"> <param name="autoplay" value="false"> <param name="controller" value="true"> <param name="bgcolor" value="#FFFFFF"> <embed src="musicasite.mp3" autostart="false" loop="false" width="0" height="0" controller="true" bgcolor="#FFFFFF"></embed> </object>');
    $('.mp3').show();
});​
于 2012-12-23T01:08:32.583 回答