Bir girişin id attr değerini alın ve değişken olarak saklayın

Kimliği, tıklatılan girişten gelen jQuery'de bir değişken olarak nasıl saklarım? Elimde olan bu ama işe yarayıp yaramayacağından emin değilim.

<div class="email_button">
   <input id="button1" value="value" />
   <input id="button2" value="value2" />
   <input id="button3" value="value3" />
   <input id="button4" value="value4" />
</div>

Bu benim jQuery

jQuery('.email_button input').click(function(){
var buttonid = jQuery($this('.emailbutton input')).attr('id');
)}

o zaman bu kimliği ajax yoluyla bazı koşullu php'lere aktaracağım.

2
değer "değer" üzerine bir yazım hatası yaptınız ve birkaç kez kopyaladınız mı? Ayrıca $ this ('. Emailbutton input') sağlanan kodunuz bağlamında bir anlam ifade etmiyor.
katma yazar Huangism, kaynak
@BrijeshBhatt, lütfen yazarın orijinal kodunu değiştirmeyin
katma yazar Huangism, kaynak
var buttonid = this.id yeterli olacaktır
katma yazar Benjamin Gruenbaum, kaynak
HTML’niz geçersiz.
katma yazar Benjamin Gruenbaum, kaynak
Yine de kodu çalıştırmayı denedin mi?
katma yazar Huey, kaynak
Yazım hatalarımı yansıtacak şekilde HTML’yi düzenledim
katma yazar Alex Knopp, kaynak

6 cevap

Kodunuzda yanlış olan birkaç şey var.

JS

$('.email-button input').click(function() {
    var buttonid = this.id;
)};

this.id will return the id of the clicked element .email-button is the class you used in the HTML, not .email_button

HTML

invalid HTML <input id="button1" value"value"> it's probably a typo then copied a few times but you missed the equal sign and closing. Should be

<input id="button1" value="value" />

Bilginize, kimliği elde etmek için $ (this) .attr ('id') kullanabilirsiniz, ancak sizin durumunuzda bunu yapmanın bir anlamı yoktur.

1
katma
Yardımınız için teşekkürler
katma yazar Alex Knopp, kaynak

HTML'iniz geçersiz. aşağıdaki gibi doğru sınıfa değiştirin:

$('.email-button input').click(function (e) {
    var buttonid = e.target.id;
});

VEYA

$('.email-button input').click(function (e) {
    var buttonid = $(this).attr('id');
});

HTML

<div class="email-button">
  <input id="button1" value="value" />
  <input id="button2" value="value" />
  <input id="button3" value="value" />
  <input id="button4" value="value" />
</div>
1
katma
@ThinkDifferent Sanırım hala amacını özledin
katma yazar Huangism, kaynak
@AlexKnopp, this.id için $ (this) .attr ("id") takas eder, $ (). Attr ile kaydırmak tamamen anlamsızdır
katma yazar Benjamin Gruenbaum, kaynak
Girdi kimlikleri düğmesinin tümü düğme olduğundan ve HTML zaten geçersiz olduğundan, buna benzer bir şey demek istiyorum. OP'nin gerçek butonları olduğunu ve bunlarda bir şeyler olabileceğini farz ediyorum.
katma yazar Benjamin Gruenbaum, kaynak
Doğru, bunlardan biri yanlış (e.target) çünkü olay başlangıçta bir alt öğenin içine girerse yanlış çalışır (diyelim ki OP bir aralık ekler ve girişi yarın için gerçek bir düğme yapar). İkincisi gereksiz.
katma yazar Benjamin Gruenbaum, kaynak
Neden $ (this) .attr ("id") eklediniz? Neden insanların sadece bir özellik elde etmek için jQuery'deki şeyleri sarmalamaktan hoşlandığını anlamadım. Yaptığınız şey var x = {y: 5}; $ (x) .attr ("y") - tabi, işe yarıyor ama aynı zamanda oldukça anlamsız.
katma yazar Benjamin Gruenbaum, kaynak
Bunun özellikle this.id 'den daha iyi olduğundan emin değilim, özellikle eğer yayılma meydana geldi ise, kimliği yanlış bulabilirse
katma yazar Benjamin Gruenbaum, kaynak
@ BenjaminGruenbaum düzgün bir şekilde görmediniz 2 çözüm önerdim.
katma yazar Think Different, kaynak
@BenjaminGruenbaum şöyle demek istiyorsun http://jsfiddle.net/mmqcd8La/ ? Burada yanlış olan ne olacak?
katma yazar Think Different, kaynak
Şimdi anlayacağın şeyi anladım. Bunun için teşekkür ederim :) Ama kendimden, soruyla ve ne istenirse devam etmem gerektiğini düşünemiyorum. Yine de teşekkürler
katma yazar Think Different, kaynak
Aslında ben sadece bu üç girdiyi kullanıyorum, özellikle de bu soru için sadece sahte içerik olanları değil. Fakat @Think Different - ikinci cevabınız işe yaradı ve ne kullanıyor olacağım.
katma yazar Alex Knopp, kaynak

Bunun gibi:

var id;

$("input").click(function(){
id= $(this).attr("id");
})
1
katma
Yardım için teşekkürler
katma yazar Alex Knopp, kaynak
<div class="email-button">
  <input id="button1" value="value" />
  <input id="button2" value="value" />
  <input id="button3" value="value" />
  <input id="button4" value="value" />
</div>

$ ('. email-button girişi'). on ("klik", işlev() {     alert ($ (this) .attr ( "id")); )};

1
katma

Bu aslında yapacak:

jQuery('.email_button input').click(function(){
    var buttonid = $(this).attr('id');
   //$.post blah blah blah
)}
0
katma

Use this.id or $(this).attr('id')

jQuery('.email_button input').click(function(){
    var buttonid = this.id    //Or $(this).attr('id');
)}

.attr() is used to get the attribute and $(this) specifies current context i.e button.

Also, close input tags with value= : <input... value="..."/>

0
katma
Yardımlarınız için teşekkürler, hatalarımı ve yazım hatalarımı yansıtacak şekilde sorumu değiştirdim.
katma yazar Alex Knopp, kaynak