2012-06-28 19 views
12

クリックしたdivのIDを取得する必要があります。クリックしたdivのIDを取得するにはどうすればよいですか?

ステータスクラスIをクリックすると、未定義のIDが返されました。ここで

は私のjavascriptのコードはどのように正しいID値を取得する必要があります

jQuery(document).ready(function() { 
    $(".status").bind('click', $.proxy(function() { 
     var status = $(this).attr('id'); 
     alert(status); 
    }, this)); 
});​ 

とHTML

<div class="status" id="s_1">111111</div> 
<div class="status" id="s_3">33333</div> 
<div class="status" id="s_2">222222</div> 

のですか?

+1

なぜ '$ .proxy'ですか? – gdoron

+0

他のメソッドを呼び出す必要があります。 –

+0

iiこのセレクタに一致するすべてのelemetsのIDを返します。 "each"を使用してください – speedingdeer

答えて

17

$ .proxyを使用している理由がわかりません。それを削除すると、必要な結果が得られます。

$('.status').click(function(event) { 
    var status = $(this).attr('id'); 
}); 

それでもプロキシを使用したい場合は、event.currentTarget

についてどのように
$(".status").bind('click', $.proxy(function(event) { 
    var status = $(event.currentTarget).attr('id'); 
    alert(status); 
}, this)); 
+0

上記の私のコメントとして、なぜ要素idを取得するためにjQueryを使用しますか?ステータスセレクタの前にドットが表示されません。 – gdoron

+0

これは彼がやっていることだからです。 – digitaldreamer

+1

ummm。コピーしないでコードを修正する必要があります。:) – gdoron

2

によってクリックされた要素にアクセスすることができます

$('div').on('click', function(){ 
    alert($(this).attr("id")); 
}); 

これはクラスstatusで唯一のdivのために働かなければなりません? PROXY問題のhttp://jsfiddle.net/vNaqR/

+0

um私はdownvoteしませんでしたが、 'div.status 'はセレクタとして動作します。 –

+0

はい、それはおそらくより清潔になります、ありがとう。 – woemler

+0

これは他の間違いを犯しました。これは現在、ステータスクラスを持つdiv内のノードを探しています。あなたはjQueryと似ていますか? – gdoron

1

使用event.target $ .proxy()を使用してください。 イベントがトリガされたコンテキストを使用する代わりに、指定されたコンテキスト(ここではパラメータ2)を使用して関数(ここではパラメータ1)を呼び出します。

主な質問では、指定されたコンテキストは$(document)です。 このように、関数は、イベントがトリガーされたオブジェクトのID($( '。status')要素)ではなく、ドキュメントのIDを取得しようとします。

+0

ありがとうございました:) –

+0

注: 'var status = event.target.id;'を使うことができましたが、その部分のコードに従っています。 –

0
$('selector').each(function(){ 
    $(this).click(function(){ 
     alert($(this).attr('id')) 
    }); 
}); 
0

説明:

は気をつけてくださいをもしそうなら、試してみてください。

jQuery(document).ready(function() { 
     $(".status").bind('click', $.proxy(function(event) { 
      var status = $(event.target).attr('id'); 
      alert(status); 
    }, this)); 
}); 

はアクションで見るその要素を参照する

$('div.status').on('click', function(){ 
    alert($(this).attr("id")); 
}); 
0

私はボタンをクリックしたときに隠れたdivを表示しようとしていますが、ユーザがボタンをクリックするたびにインデックスが表示されます。私は追加モードでない編集上だ場合は、リスト上のため、働いていない

は常に空である(それは編集だときのdivを表示)

     <li> 
         <button type="button" name="addAnotherButton" class="btnFwd gradient smButtonStyling" 
         onClick="showInput();"> 
          <img src="/Common/web/static/images/add.png" class="smbtnIcon" /> 
          Add Another 
        </button> 
       </li> 

       <li> 
          <c:forEach items="${planInfoList}" var="planInfo" varStatus="status"> 
         <div id="uploadBody[${status.index}]" style='display = none'> 
          <label class="adminFormLabel">Title:</label> 
          <form:input path="planInfoList[${status.index}].title" onfocus="this.select();" maxlength="50" size="30"/> 
          <label class="adminFormLabel">Plan Number:</label> 
          <form:input path="planInfoList[${status.index}].planNumber" size="10" maxlength="10"/> 
         </div> 
        </c:forEach> 
       </li> 

JS:

var found = 0; 
    if ($('#uploadBody' + i).hide()) { 
     for (var i = 0; i < 5; i++) { 
      if (found == 0) { 
       $('#uploadBody' + i).show(); 
      } 
      found++; 
     }  
     } 
0
<!DOCTYPE html> 
<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
    $(".divField").click(function(){ 
     alert("id : " + $(this).attr("id")); 
    }); 

}); 
</script> 
</head> 
<body> 
<h1>For finding id click below text</h1> 
<div id="id1" value="Example 1" class="divField">My id is <b>id1</b></div> 
<div id="id2" value="Example 2" class="divField">My id is <b>id2</b></div> 

</body> 
</html> 
関連する問題