2

分割リストビューがあります

+---------------------+--------+
|                     |wwwwwwww|
| listview entry      |w icon w|
|                     |wwwwwwww|
+---------------------+--------+

これは、この fiddleに切り詰めることができます。右側にボタンがあり、機能にバインドされています。ボタンは、デフォルトの白い境界線 (「w」で示されます) で囲まれたアイコンです。

私が期待するもの:

  • 関数が呼び出されます(当然)。ブラウザに関係なく、アイコンをクリックするか、空白をクリックすると(すべて同じ A エンティティによって生成されるため)。

私が得るもの:

  • Chrome 30.0.1599.69m で期待どおりに動作します。
  • 空白をクリックすると、Firefox 24.0 で期待どおりに動作します w
  • Firefox では、アイコンを正確にクリックすると、ボタンの状態が変わります (システムはクリックを認識します!)。しかし、私の関数は呼び出されないようです

でデフォルトのボタンを使用すると、これは発生しません(Firefoxでも発生しません)href。たとえば、Gajotres によるオリジナルの基本的なフィドルは問題なく動作します。しかし、関数をバインドする必要があり、これをon().

トリガーとなるものについて調査しているときに、この記事を見つけました。これは、私にとってはうまくいきませんでしたが、正しい方向に向けてくれました。

皮肉なことに、実際には、イベントの問題ではなく、CSS の問題 (Z インデックスを使用) であることが判明しました。

回避策を考案できるように (コード内でこの行はコメント化されています。コメントを外して、もう一度 [実行] をクリックしてください)。

これは jQuery(Mobile) のバグですか? またはFirefoxで?または、どういうわけかより可能性が高いようですが、それは私が間違っているということですか?

4

1 に答える 1

0

仮回答

どうやらこれは、A ボタンが「標準」でない場合に、Firefox と jQM がオブジェクトの作成順序に同意しないバグです。アイコンの z-index が正しくなく、オブジェクトがクリックをインターセプトしてバブリングさせないため、ボタン自体には何も聞こえません。

fiddle に従ってz-index 補正を追加すると、Firefox の動作が正常に戻ります。

$(".foo")
.off("click")
.on("click", function() {
    alert("ok");
    return false;
})
.find("span.ui-btn-inner").css("z-index", "-1")

または、単にこれらの厄介な内側のボタン アイコン スパンをブランケット ヒットします。

$("a.ui-li-link-alt span.ui-btn-inner").css("z-index", "-1")

重要:この「解決策」は実際の問題(バグであれ、私の愚かさであれ)に対処するものではないため、jQuery/jQMの将来のバージョンなどで動作することに依存することはできません。

于 2013-10-11T10:55:52.703 に答える