0

<a>css とタグと<span>s の組み合わせを使用してテーブルを作成しています:

<a class='header'>
  <span>User ID</span>
  <span>Name</span>
  <span></span>
</a>
<a href='somesite.php'>
  <span>7</span>
  <span>Ofek</span>
  <span><button type="button" onclick="somefunc()">Add to Favourites</button></span>
</a>

結果は次のようになります。

ここに画像の説明を入力

今私の問題は、ボタンをクリックしてもsomesite.phpにリダイレクトされ、関数somefunc()が呼び出されないことです。ボタンをスパン内にネストできないことをどこかで見たので、これを機能させるための代替手段は何ですか? ? ユーザーが行をクリックするたびにsomesite.phpにリダイレクトされますが、ボタンを押したときではなく、func somefunc()が呼び出されるだけです。

4

3 に答える 3

3

button要素内に要素をネストするaと、イベントの処理に問題が生じます。HTML5 CR では禁止されています。

問題の作成を回避する簡単な方法は、インタラクティブな要素を分離することです。

<a href='somesite.php'>
  <span>7</span>
  <span>Ofek</span>
</a>
  <span><button type="button" onclick="somefunc()">Add to Favourites</button></span>

これは、マークアップを使用する論理的なアプローチでは (それ自体では) 不可能tableですが、CSS を使用して表をシミュレートし、セルがspan要素 (または、一般的にフレーズ/インライン/テキストレベルの要素) になるようにする場合は簡単です。

于 2013-10-06T18:18:24.517 に答える
1

コードに追加return falseするだけsomefunc()です:

function someFunc () {
    // your existent code
    return false;
} 

および HTML でonclick="return somefunc()"。ただし、 HTML 属性を使用するのではなく、以下を使用することもお勧めします。onclick

$("button").on("click", function (e) {
    e.preventDefault;
    somefunc();
    return false;
});

このトピックについては、こちらをご覧ください。

于 2013-10-06T17:41:56.380 に答える
0

クリックイベントをボタンにバインドしてから使用できますpreventDefault()

JS

function somefunc(e){
    e.preventDefault();
    alert("hey");
}
document.getElementById('abc').addEventListener(
    'click', somefunc, false
);

ワーキングフィドル

http://jsfiddle.net/KRVUv/1/

于 2013-10-06T17:44:11.687 に答える