2

私は私のコードにこれを持っています:

<div class="someClass">
    <div id="22" class="otherClass" onclick="goToEdit();">Title</div>
    <div class="parent">Other title</div>
</div>

と:

function goToEdit()
{
    tree.selectItem($(event.target).attr('id'));
    btnMyButton_onclick();
}

Chromeではすべてが正常に機能しますが、Mozillaではクリックイベントに反応しません。なんで?

4

6 に答える 6

2

イベントが定義されていないというエラーが表示されます

ドー!私たちは皆、気づいたはずです。

それeventはほとんどのブラウザではグローバルではありませんが、IE上にあり、ChromeはIEをグローバルにし、実行する必要があることを実行する(イベントハンドラ関数に渡す)ことで、IE用に設計されたサイトに骨を投げます。

最善の策は、まったく使用onclick="code"しないことです(以下を参照)が、これを行うこともできます。

<div id="22" class="otherClass" onclick="goToEdit(event);">Title</div>

...クロスブラウザで動作するはずです。オブジェクトは、ハンドラーが呼び出されるevent特別なコンテキストで定義されているonclick(標準的な方法でこれを行うブラウザーの場合)か、グローバル(IEの場合)であるため、どちらの方法でもその時点で定義されます(ただし、必ずしもそうとは限りません)。 、グローバルとして、goToEdit関数の後半で—これが引数として渡す理由です)。

しかし、繰り返しますが、私はそれをしません。代わりに、idCSSの値を文字で始めて有効にし、jQueryを使用してハンドラーを接続します。

HTML:

<div id="d22" class="otherClass">Title</div>

JavaScript:

$("#d22").click(goToEdit);
function goToEdit(event) {
    tree.selectItem(event.target.id.substring(1));
    btnMyButton_onclick();
}

ノート:

  • 値を渡す前dに、値の先頭を削除しました。理由idがあったと思います。22
  • 行う理由はありません。直接$(event.target).attr('id')使用するだけです。event.target.id
  • divに他の要素(spans、ems、psなど)が含まれている可能性がある場合は、ではない可能性があることに注意してください。これevent.targetdiv、の子孫要素である可能性がありますdivthisただし、常にdiv(jQueryはそれを認識します)になるので、次のようになります。

    $("#d22").click(goToEdit);
    function goToEdit(event) {
        tree.selectItem(this.id.substring(1));
        btnMyButton_onclick();
    }
    
于 2012-04-18T12:25:19.167 に答える
1

要素への参照を関数に渡してみてください。

 ... onclick="goToEdit(this);">

function goToEdit(element)
    {
       tree.selectItem($(element).attr('id'));
       btnMyButton_onclick();
    }

編集: http: //jsfiddle.net/SwUuE/4/

于 2012-04-18T12:13:11.443 に答える
0

HTML名とIDトークンは文字で始まる必要があります。あなたが持っていid="22"ます。たぶんそれはブラウザ間の不一致を引き起こします。参照:http ://www.w3.org/TR/html4/types.html

于 2012-04-18T12:05:29.063 に答える
0

定義上、divはページをさまざまなセクションに分割するために使用されます。代わりにアンカーまたはタイプボタンタグ付きの入力を使用してください

于 2012-04-18T12:12:02.493 に答える
0

HTMLから「onclick」を削除できると思います

<div class="someClass">
    <div id="22" class="otherClass">Title</div>
    <div class="parent">Other title</div>
</div>

そして、このようなことを試してください

$('#22').on('click', function (e) {
    your code
});

ただし、div id = "22"が動的に追加される場合は、次のようなものを使用する必要があります

$('parent').on('click', '#22', function (e) {
    your code
});

ここで、「親」-クリックする前に静的要素がドキュメントにすでに存在していました

于 2016-08-24T10:05:46.173 に答える
0

私も同じ問題に直面していましたが、このコードは私を助けてくれました。

私はMozillaFirefoxとChromeでテストしていましたが、両方で動作しました。

<input type="button" onclick="return goBack();" class="btn btn-warning cancel" value=" Cancel" style="color:white" />

<script>
function goBack() {
    window.history.back();
}
</script>
于 2017-07-07T07:29:36.060 に答える