HTML

<div>my content of the div1
  <input/>
</div>​

<div>my content of the div2
  <input/>
</div>​

<div>my content of the div3
  <input/>
</div>​

JS

$('input').on('change',function(){
  var x = $('this').parent('div').val();
    alert(x);
})​​​;

Moim problemem jest to, dlaczego nie mogę uzyskać treści Div, który został zmieniony wkład?

2
Techie 3 październik 2012, 11:53

8 odpowiedzi

Najlepsza odpowiedź

skorygowany skrypt

$('input').on('change',function(){
  var x = $(this).parent('div').html();
  alert(x);
})​​​;
  • val() tylko dla pola formularzy
  • this nie powinien być cytowany.

Alternatywa

Jeśli chcesz tylko tekst rodzica, możesz użyć text(). Przeglądarki mogą jednak różnić się, w jaki sposób go wdrażają (patrz Notatki tutaj). W takim przypadku jest prawdopodobnie czyszczenie, aby owinąć treść, którą chcesz w innym elemencie, jak:

<div>
  <span>my content of the div1</span>
  <input/>
</div>​

I użyj skryptu jak:

$('input').on('change',function(){
  var x = $('this').siblings("span").html();
  alert(x);
})​​​;
2
Tim Medora 3 październik 2012, 08:00

Musisz zdać wartość this, a nie ciąg "to", do jQuery i zadzwonić { {X1}}, aby uzyskać zawartość tekstu elementu, a nie {x2}} (co otrzymuje wartość elementu wejściowego):

$('input').on('change',function(){
    var x = $(this).parent('div').text(); //`text` method gets contents of div
    //        ^ no quotes around `this`
    alert(x);
})​​​;
6
James Allardice 3 październik 2012, 07:54

Możesz to zawartość div za pomocą .html(), a nie z metodą .val(). Metoda VVAL () jest używana przede wszystkim do uzyskania wartości elementów formowania, takich jak wejście, wybierz i textarea. Zobacz Oto Szczegółowe informacje.

2
Bud Damyanov 3 październik 2012, 07:54

jQuery val() działa tylko na wejściach nie na generycznych elementach HTML.

1
Lucas Green 3 październik 2012, 07:54

Zmień $('this') do $(this). (Usuń cytaty).

1
MarcoK 3 październik 2012, 07:54

.Val () nie istnieje dla innych tagów niż zaznaczanie / wejścia / textarea Tags. Zaproponuję, że używasz funkcji .Text () lub .html (), w zależności od tego, co chcesz odzyskać.

1
Laurent Brieu 3 październik 2012, 07:55

Twój kod powinien wyglądać tak

$('input').on('change',function(){
  var x = $(this).parent('div').text();
// OR var x = $(this).parent('div').html();
    alert(x);
})​​​;
1
webCoder 3 październik 2012, 07:55

Użyj tego

$('input').bind('keyup',function(){ 
alert($(this).parent().html());
})
1
StaticVariable 3 październik 2012, 07:56