2016-05-05 6 views
2

"Continents & Oceans"というラベルのボタンをクリックすると、ドロップダウンリストが表示されますが、ボタンを2回クリックした場合に限ります。私はそれが最初のクリックで動作するようにしたいと思います。jQueryのドロップダウンで2回のクリックが必要なのはなぜですか?

コードに問題がありますか、何かを追加して最初のクリックでドロップダウンをドロップする必要がありますか?

これはjQuery関数ですが、AJAXでの最初の実験も含まれていますので、それはおそらく問題です。

<input type = "button" id = "konoce" value = "Continents &amp; Oceans" class="btn btn-konoce" 
<div id = "div-konoce"> </div> 

<script type = "text/javascript" language = "javascript"> 
$(document).ready(function() { 
    $("#konoce").click(function(event) { 
    if ($('#div-konoce').html() == '') { 
     $.get("/2b/inc/ajax/db-lists/world/konoce.php", { name: "KonOce"  }, function(data) { 
    $('#div-konoce').html(data); 
    }); 
    } 
    else { 
     $('#div-konoce').html(''); 
    } 
    });    
}); 
</script> 

EDIT:

私は以下の回答ごとに自分のコードを修正しました。ただし、ドロップダウンを開くにはまだ2回のクリックが必要です。

<input type = "button" id = "konoce" value = "Continents &amp; Oceans" class="btn btn-konoce" /> 

、あなたが入力していないボタンとしてこれを持っている理由、それは情報を収集するために使用されていないので、私は、わからない - :それはあるべき -

<button type = "button" id = "konoce" class="btn btn-konoce">Continents &amp; Oceans</button> 
<div id = "div-konoce" style="margin: 0 -5px;"> </div> 
+0

div要素が空の場合にのみコンテンツを取得しているあなたのコードに次の

への変更この行を - しかし、それはスペース文字を持っているので、 – gavgrif

答えて

4

あなたのライン:

if ($('#div-konoce').html() == '') 

チェックし、 "DIV-konoce" divが空ですが、そうではありません場合:

<div id = "div-konoce"> </div> 

そこにスペースがスペースを削除して再試行してください ''

を==ではないという意味...あります。

+1

良いピックアップ@Webomatik – gavgrif

+1

['trim'](https://developer.mozilla.org)/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)を使用すると、 –

1

は、あなたの入力を終了していませんしかし、クリックfoをトリガーとして機能:

<button type = "button" id = "konoce" class="btn btn-konoce">Continents &amp; Oceans</button> 
+0

は私が入力を使用しての違いを信じて空ではありません要素とボタン要素は、ボタン要素を使用して、テキスト以外の要素をラベルに配置できることです。ラベルがテキストのみであることを意図している場合は、他の重要な違いはないと私は考えています。 – AgentME

+0

うわー、どうやってそのタグを閉じるのを忘れたのか分かりません。それは入力からボタンへの変更についてのヒントです。これを正解としてみましたが、まだ十分なポイントがありません。悪いニュース:ドロップダウンを開くにはまだ2回のクリックが必要です。多分、私のコードのどこかにバグがあります。 – WordBear

+0

ちょっと - Webomatikの答えを見てください - 空でないdivと空の値を比較しています - それ以降はうまくいくはずです – gavgrif

1

1つのヒントは、なぜあなたは常に$('#div-konoce')を空にしていますか、それは1クリックあたり1つのajaxリクエストを引き起こします。しかし、最初にifと書いたのであれば、最初にクリックした後に以前に読み込まれたメニューが表示されます。

<div id = "div-konoce"></div> 
    if ($('#div-konoce').html()=='') { 
     $.get("/2b/inc/ajax/db-lists/world/konoce.php", { name: "KonOce"  }, function(data) { 
    $('#div-konoce').html(data); 
    }); 
関連する問題