1

以下の関数をボタンで割り当てたいのですが、どういうわけか関数の「location.href」の部分が機能しません。ボタンからdivに変更すると機能するので、ボタンに問題があるようです。

なぜそれが機能しないのですか、それを解決する方法はありますか(私は本当にボタンを使用したいです)?

<button id="back">Cancel</button> // Doesn't work
<div id="back">Cancel</div> // Works

    $('#back').click(function(){
        var imageId = $('#id').attr('href');
        var id = imageId.split('/');
        location.href = '/blog/' + id[3];
    });
4

4 に答える 4

1

わかりました、私はそれを自分で解決することができました。問題は、明らかに'preventDefault();'を追加する必要があるということです。ボタンを使用して「location.href」を機能させる場合。

私が変更して現在機能しているコードは次のとおりです。

    $('#back').click(function(e){
        e.preventDefault();
        var imageId = $('#id').attr('href');
        var id = imageId.split('/');
        location.href = '/blog/' + id[3];
    });
于 2012-06-01T23:30:45.167 に答える
1

問題はボタンではありません。問題は、クリックをalinkやなどのデフォルトの動作で要素にバインドするbuttonと、ブラウザはスクリプトを実行しますが、最初にデフォルトの動作に従い始めるという事実です。

を使用して、デフォルトの動作がトリガーされないようにするか return false;、要素に関連付けられている他のアクションがバブルアップするのを防ぎます。

この実用的なフィドルの例を参照してください!

$('#back').click(function(){
    return false;  // prevent the regular click action for the element
    alert('bubu'); // this will not run
});

または .preventDefault();、デフォルトの動作を防ぐだけで、要素に関連する他のアクションを実行するために使用します。

この実用的なフィドルの例を参照してください!

$('#back').click(function(event){
    event.preventDefault(); // prevent the regular click action for the element
    alert('bubu'); // this will run
});

ここにこのテーマに関する良い記事があります!

于 2012-06-01T23:52:16.113 に答える
0

クラスの問題ではなくIDのように見えますか?この例をIDで試してみましたが、うまくいきませんでしたが、クラスに切り替えて問題ありませんでした。

http://jsfiddle.net/rexzc/

于 2012-06-01T23:22:36.953 に答える
0

ボタンをクリックすると、フォームまたはドキュメントの送信が試行されます。type='button'属性を使用して、それを防ぐことができます。

于 2012-06-02T00:38:36.653 に答える