-1

ボタンがクリックされたときにdivに大量の非表示データを表示するためにWebページで使用しているjquery 'show'メソッドがあります。

$(document).ready(function(){
    $("button#show").click(function(){
    $("div.show").show();    
    });
 }); 

私はこれを以前に問題なく使用しました。この場合、ボタンをクリックするとテキストが表示されますが、ページは読み込み状態になります。それが完了すると、テキストは再び消えます。これは、'show' と 'toggle' のどちらを使用しても発生するようです。誰もこの種の行動に出くわしたことがありますか? それが私のコードの他の場所の問題なのか (私は div のコンテンツを生成するために php を使用しています)、それとも jquery の問題なのかはわかりません。

[編集] これがボタンの html です

<br/><button id='toggle'>Show all</button>
<div>All the content goes here</div>
4

2 に答える 2

0

ボタンがボタンのように聞こえます (は のデフォルト タイプであるため、 がない場合は送信ボタンであることにsubmit注意してください)。デフォルトのアクション (フォームの送信) を防止する必要があります。ただし、ボタン自体のデフォルトを防止するだけでは十分なクロスブラウザーではない可能性があることに注意してください。フォームでハンドラーを使用して、そこでキャンセルする必要がある場合があります。submitbuttontype=submit

同様に、「ボタン」が実際にボタンのように見えるようにスタイル設定されたリンクである場合は、デフォルト (リンクをたどる) を防止する必要があります。

eventjQuery イベント ハンドラーでは、渡された引数を受け入れてそのpreventDefaultメソッドを呼び出すことで、デフォルトを回避できます。

$(document).ready(function(){
    $("button#show").click(function(event){
        event.preventDefault();
        $("div.show").show();    
    });
});

...またはreturn falseハンドラーから行うことで、デフォルトを防ぎ、伝播(バブリング) を停止します。

于 2012-07-05T11:09:36.893 に答える
0

私はここで問題を見つけました。他の誰かに役立つ場合に備えて、答えとして残しておいてください。私が持っていた他のコードのいくつかは、終了</form>タグの表示を妨げていました。つまり、ページが<button>フォームに属しているかのように解釈されていました。TJが提案したように、ブラウザーはそれを新しい送信ボタンのように扱ったと思いますが、そのようにコーディングされていなかったにもかかわらず、フォームを再送信しました.

于 2012-07-05T11:31:03.477 に答える