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

あなたは2つの大きな間違いを犯しています:

1.トグル ライトを使用していません。ボタンの動作ではなく、ボタンの表示のみを切り替えたい。それは$(this).toggle()、トグル関数の外側の残りのアクションである必要があります。2 つの異なるボタンをクリックしていると考えられるため、toggle を使用してもまったく意味がありません。予期しない表示/非表示の動作が発生する可能性があるからです。

2.クリック(2回目のクリック)で、前のクリックで削除した.mp3-0ものを(再)追加し、置き換えません。これが、コードが 3 クリックしか実行されない理由です。<object>#mp3obj

STOP - を削除し<object>ます。

START - に置き換え#mp3objます<object>

STOP - もう一度削除<object>します。

START - ...置換するものが見つかりません#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 に答える