2

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);
})​​​;

私の問題は、入力が変更された div の内容を取得できないのはなぜですか?

4

8 に答える 8

6

this文字列 "this" ではなくの値を jQuery に渡し、(入力要素の値を取得する).text()ではなく、要素のテキスト コンテンツを取得するために呼び出す必要があります。.val()

$('input').on('change',function(){
    var x = $(this).parent('div').text(); //`text` method gets contents of div
    //        ^ no quotes around `this`
    alert(x);
})​​​;
于 2012-10-03T07:54:10.887 に答える
2

修正されたスクリプト

$('input').on('change',function(){
  var x = $(this).parent('div').html();
  alert(x);
})​​​;
  • val()フォームフィールド専用です
  • this引用してはいけません。

親のテキストのみが必要な場合は、 を使用できますtext()。ただし、ブラウザーによって実装方法が異なる場合があります (こちらのを参照してください)。この場合、次のように、必要なコンテンツを別の要素でラップする方がおそらくクリーンです。

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

そして、次のようなスクリプトを使用します。

$('input').on('change',function(){
  var x = $('this').siblings("span").html();
  alert(x);
})​​​;
于 2012-10-03T07:55:19.307 に答える
2

メソッド.html()ではなく、 でdiv の内容を取得できます。.val().val() メソッドは主に、input、select、textarea などのフォーム要素の値を取得するために使用されます。詳しくはこちらをご覧ください。

于 2012-10-03T07:54:23.030 に答える
1

.val() は、select/input/textarea タグ以外のタグには存在しません。何を取得するかに応じて、.text() 関数または .html() を使用することをお勧めします。

于 2012-10-03T07:55:00.893 に答える
1

あなたのコードは次のようになります

$('input').on('change',function(){
  var x = $(this).parent('div').text();
// OR var x = $(this).parent('div').html();
    alert(x);
})​​​;
于 2012-10-03T07:55:32.347 に答える
1

これを使って

$('input').bind('keyup',function(){ 
alert($(this).parent().html());
})
于 2012-10-03T07:56:45.670 に答える
1

jQueryval()は、一般的な html 要素ではなく、入力に対してのみ機能します。

于 2012-10-03T07:54:32.997 に答える
1

に変更$('this')$(this)ます。(引用符を削除します)。

于 2012-10-03T07:54:49.197 に答える