获取输入被更改的div val()

时间:2012-10-03 07:53:10

标签: javascript html jquery

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的内容?

8 个答案:

答案 0 :(得分: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);
})​​​;

答案 1 :(得分:2)

您可以使用.html()制作div的内容,而不是使用.val()方法。 .val()方法主要用于获取表单元素的值,例如input,select和textarea。 有关详细信息,请参阅here

答案 2 :(得分:2)

更正后的脚本

$('input').on('change',function(){
  var x = $(this).parent('div').html();
  alert(x);
})​​​;
  • val()仅适用于表单字段
  • this不应该被引用。

<强>替代

如果您只想要父文本,可以使用text()。但是,浏览器在实现方式上可能会有所不同(请参阅notes here)。在这种情况下,将所需内容包装在另一个元素中可能更清晰,例如:

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

并使用如下脚本:

$('input').on('change',function(){
  var x = $('this').siblings("span").html();
  alert(x);
})​​​;

答案 3 :(得分:1)

jQuery val()仅适用于非通用html元素的输入。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

除了select / input / textarea标签之外,其他标签不存在

.val()。 我建议您使用.text()函数或.html(),具体取决于您要检索的内容。

答案 6 :(得分:1)

你的代码应该是这样的

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

答案 7 :(得分:1)

使用此

$('input').bind('keyup',function(){ 
alert($(this).parent().html());
})