2012-06-28 3 views
12

Ich brauche die ID des angeklickten div.Wie benutze ich jQuery die ID des div, auf das geklickt wurde?

Jetzt, wenn ich auf Statusklasse I eine zurückgegebene undefinierte ID.

Hier ist mein Javascript-Code

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

und 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> 

Wie soll ich den richtigen ID-Wert zu bekommen?

+1

Warum die '$ .proxy'? – gdoron

+0

brauche es ich rufe andere Methoden –

+0

ii gibt Ihnen ID aller Elemets abgestimmt auf diesen Selektor. Verwenden Sie "eachly" – speedingdeer

Antwort

17

Ich bin mir nicht sicher, warum Sie $ .proxy verwenden. Entfernen Sie es sollten Sie die gewünschten Ergebnisse erhalten.

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

Wenn Sie noch Proxy verwenden möchten, können Sie das geklickt Element Zugriff durch event.currentTarget

$(".status").bind('click', $.proxy(function(event) { 
    var status = $(event.currentTarget).attr('id'); 
    alert(status); 
}, this)); 
+0

Wie mein Kommentar oben: Warum jQuery verwenden, um die Element-ID zu erhalten? und du verpasst den Punkt vor der Statusauswahl. – gdoron

+0

weil er das macht. – digitaldreamer

+1

umm. Sie sollten seinen Code reparieren, nicht kopieren.:) – gdoron

2

Wie wäre:

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

dies nur für divs mit Klasse zu arbeiten Hat status ? Wenn ja, versuchen:

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

um Ich habe nicht downvote aber 'div.status 'würde als Selektor funktionieren. –

+0

Ja, das wäre wahrscheinlich sauberer, danke. – woemler

+0

Jetzt hat es einen anderen Fehler, dieser sucht jetzt nach Knoten innerhalb eines div mit der Statusklasse. Sind Sie mit jQuery vergleichbar? – gdoron

1

Verwendung event.target diesem Element zu referenzieren

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

in Aktion zu sehen: http://jsfiddle.net/vNaqR/

+0

vielen Dank :) –

+0

HINWEIS: Sie könnten 'var status = event.target.id;' verwenden, aber ich folgte Ihrem Code auf diesem Teil. –

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

Erklärung der Ausgabe PROXY:

Seien Sie vorsichtig mit $ .proxy(). Er ruft eine Funktion (hier der Parameter 1) auf, die den angegebenen Kontext (hier den Parameter 2) verwendet, anstatt den Kontext zu verwenden, in dem das Ereignis ausgelöst wird.

In der Hauptfrage ist der angegebene Kontext $ (Dokument) so. Auf diese Weise versucht die Funktion, die ID des Dokuments anstelle der ID des Objekts zu erhalten, auf dem das Ereignis ausgelöst wird (das Element $ ('. Status')).

0

Ich versuche, das versteckte Div anzuzeigen, wenn ich auf die Schaltfläche klicke, und jedes Mal, wenn der Benutzer auf die Schaltfläche klickt, werden weitere Indizes angezeigt.

, die nicht funktioniert, da auf der Liste immer leer ist, wenn ich auf dem Add-Modus bin bearbeiten nicht (die div angezeigt werden, wenn es bearbeitet)

     <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> 
Verwandte Themen