jQuery v1.8.3 と jQuery UI v1.9.2 を使用しています。
a click
of abutton
メニューul
が開いている場合は ( a を介して) 非表示になり、閉じている場合は表示するようにしたいので、最も基本的な形式である on ,でトグル機能を使用することにしました。そのように単純です、例えばclick
toggle()
button.click =>
autocomplete = input_field.data("ui-autocomplete")
menu = autocomplete.menu
ul = menu.element
ul.toggle()
(それはcoffeescriptですが、要点はわかります)
実際に起こることは、ul
が最初に (ボタン経由ではなく) 表示されたときに、表示プロパティが に設定されているdisplay: block
ということです。
次に、ボタンの最初のクリックで、クリック関数内で表示プロパティの現在のステータスを確認すると、次のようになります。
console.log "display = #{ul.css('display')}"
ul.toggle()
console.log "display = #{ul.css('display')}"
出力は次のとおりです。
表示 = なし
表示 = ブロック
そのため、何らかの理由でプロパティが最初に誤って取得されています。
表示プロパティを追加display: block
し、次のクリックで設定しますdisplay: none
。
オートコンプリート ウィジェットul
によってレンダリングされるため、直接制御することはできず、それをいじる必要はありません。
これは予想される動作ですか?これを回避する最善の方法は何ですか? 表示属性が設定されているかどうかをチェックし、それに応じて表示または非表示にする関数を渡すことを考えてclick
いますが、より簡単な方法またはより良い機能、おそらく新しいバージョンのトグルがある場合は、お知らせください。jQuery のドキュメントは、私の見解では、あらゆる技術プロジェクトの中で最悪のものの 1 つであるため、完全に間違った関数を使用している可能性が高いと考えています。
どんな助けでも大歓迎です。