我有以下标记:
<button class="button" type="button"><span>Edit</span></button>
我想在.button上有一个click事件,它会改变下一个span的值。
所以我将此作为测试:
$('.button').click(function(){
$(this).next('span').val();
})
然而,返回'undefined'。如何选择范围?
谢谢!
答案 0 :(得分:3)
你需要解决两件事。第一个next()
适用于兄弟元素。您的span
位于button
内。所以改成儿童。接下来要获取span
元素中的值,您需要使用.html()
$('.button').click(function(){
$(this).children('span').html();
})
EDITED: 这是jsFiddle
答案 1 :(得分:1)
你想要.text()或.html()取决于你是只想要文本,还是标记随之而来。
编辑:
等一下,你的跨度在按钮内?有趣...
您可以使用$(this).text();
来获取文本。
答案 2 :(得分:0)
这是否有效:
$('.button').click(function(){
$(this).children('span').html();
})
答案 3 :(得分:0)
.val()
仅适用于表单元素。使用.text()
或.html()
更改<span>
答案 4 :(得分:0)
在您的示例中,跨度不是“下一个”,它是子节点。如果你的html看起来像这样,你会使用next:
<button class="button" type="button">Click me</button><span>Edit</span>
另外,你想使用html()来获取文本,(正如Björn所提到的)