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的内容?
答案 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)
.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());
})