【发布时间】:2011-01-17 21:08:41
【问题描述】:
当我尝试使用 jQuery next() 方法时,它不适用于 live()。
首先,这是我的代码:
$(".toggle_button").live('click', function() {
$(this).html($(this).html() == '-' ? '+' : '-');
$(this).next(".info_section").toggle(400);
});
这是 HTML
<div class='section_toggle_container'>
<div class='toggle_button'>-</div>
<strong>Driver Information:</strong>
</div>
<div class='info_section'>
info here
</div>
问题是否可能在于.toggle_button 是嵌套的,导致.info_section 无法访问?
第二行效果很好,因为它修改了给定live() 事件的元素。然而,第三行是问题所在。这是因为它使用的是next()。
谁能帮我解决我的next() 问题?
【问题讨论】:
-
您需要显示我认为适用的 HTML。
.toggle_button元素之后是否可能没有.info_section?或者您是在使用上面一行中的.html()调用来破坏this?尝试改用.text()。 -
到底是什么问题? 你的 HTML 是什么样子的?
next()只会返回一个元素当且仅当this的下一个兄弟元素具有类info_section。它确实不返回类info_section的下一个兄弟。 -
@Orbling:
html只影响内容,不影响元素本身。 -
发布您的实际代码,我不知道您的问题是什么。我可以让它正常工作:jsfiddle.net/jWR6A 但我所做的只是随机猜测你想做什么。发布 HTML。或者更好地描述 .next 没有做什么,因为它完全按照文档所说的去做。
-
@Felix Kling:好点子,但考虑到正在进行的更改,使用
.text()仍然会更好。