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

.html()您可以使用而不是使用.val()方法来获取 div 的内容。.val() 方法主要用于获取输入、选择和文本区域等表单元素的值。有关详细信息,请参见此处

于 2012-10-03T07:54:23.030 回答
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 回答
1

jQueryval()仅适用于输入而不适用于通用 html 元素。

于 2012-10-03T07:54:32.997 回答
1

更改$('this')$(this)。(删除引号)。

于 2012-10-03T07:54:49.197 回答
1

除了 select/input/textarea 标签之外,其他标签不存在 .val()。我建议您使用 .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 回答