2011-10-30 8 views
0

divがクリックされたことを自動的に検出して特定のdivのテキストを追加しようとしています。jQuery - div idを自動的に検出する

$('#sjalland').live("click", function(e) { 
    e.preventDefault(); 
    $('#searchBoxBig').val('Sjælland, '); 
    $('#searchBoxBig').focus() 

return false; 
}); 

は今、私がクリックされたとき(#sjallandのように)この機能を有効にしている6つのdivのを持っている:

だから、ここで私がやろうとしているものです。しかし、今私は同じ機能の6を作成する必要があるように見える?

同じ機能を6つ作成する代わりに、どのdivがクリックされたかを検出するスマートな方法を作成し、#sjallandと#midtjylland、#nordjyllandなどを置き換えるにはどうすればよいですか?

答えて

2

divに同じクラスを与え、idの代わりにセレクタとしてクラス名を使用します。例えば

また
$(".someclassname").live("click", function() { 
    $('#searchBoxBig').val($(this).attr("id")).focus(); 
}); 

含むDIVにクリックコールバックを適用し、(親のdivまでバブリングからイベントを防ぐためにevent.stopPropagation()を使用)、内側のdivがクリックされたかを検出するためにevent.targetを使用しています。

+0

これは素晴らしいです!完璧に動作します。 – skolind

2

具体的にクリックされた項目を確認するには、アクション内で$(this)を使用します。

例:

$("div.myDivs").click(
    function(){ 
     var id = $(this).attr("id"); //Id of the object 
    } 
); 
0

要素をクリックした取得するために使用e.target(すなわち、あなたが親に結合し、上でクリックされた子を知りたい場合)。

thisを使用して、ハンドラがバインドされた要素を取得します。

関連する問題