jQuery next()无法与live()一起使用
当我尝试使用jquerynext方法时,它不适用于live 首先,这是我的代码:jQuery next()无法与live()一起使用,jquery,live,next,Jquery,Live,Next,当我尝试使用jquerynext方法时,它不适用于live 首先,这是我的代码: $(".toggle_button").live('click', function() { $(this).html($(this).html() == '-' ? '+' : '-'); $(this).next(".info_section").toggle(400); }); 这是HTML <div class='section_toggle_container'> &
$(".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_按钮嵌套,使得.info_部分无法访问
第二行非常有用,因为它修改了给定实时事件的元素。然而,第三行是问题所在。这是因为它正在使用next
有人能帮我解决下一个问题吗?查看HTML不应该是您的陈述:
$(this).next(".info_section").toggle(400);
是:
查看HTML不应忽略您的声明:
$(this).next(".info_section").toggle(400);
是:
虽然您有了有效的答案,但我想对您切换-和+,提出一个建议,我建议使用文本而不是HTML,并使用固有的文本作为文本,HTML作为HTML: 此外,我还建议缓存$this,如果您多次调用它,则值得使用缓存来防止随后必须重新创建它,从而导致:
$(".toggle_button").live('click', function() {
var $this = $(this);
$this.text(function(index,text) {
return text == '-' ? '+' : '-';
});
$this.parent().next(".info_section").toggle(400);
});
当然,如果您使用的jQuery版本大于或包括1.7,那么您应该使用on方法,而不是因为jQuery 1.7不推荐使用live,这将提供:
$(".toggle_button").on('click', function() {
var $this = $(this);
$this.text(function(index,text) {
return text == '-' ? '+' : '-';
});
$this.parent().next(".info_section").toggle(400);
});
不过,不幸的是,这只是一个建议,只是为了防止难以理解的代码被粘贴到注释中而发布的一个答案
参考资料:
.
.
.
.
虽然您有了有效的答案,但我想对您切换-和+,提出一个建议,我建议使用文本而不是HTML,并使用固有的文本作为文本,HTML作为HTML: 此外,我还建议缓存$this,如果您多次调用它,则值得使用缓存来防止随后必须重新创建它,从而导致:
$(".toggle_button").live('click', function() {
var $this = $(this);
$this.text(function(index,text) {
return text == '-' ? '+' : '-';
});
$this.parent().next(".info_section").toggle(400);
});
当然,如果您使用的jQuery版本大于或包括1.7,那么您应该使用on方法,而不是因为jQuery 1.7不推荐使用live,这将提供:
$(".toggle_button").on('click', function() {
var $this = $(this);
$this.text(function(index,text) {
return text == '-' ? '+' : '-';
});
$this.parent().next(".info_section").toggle(400);
});
不过,不幸的是,这只是一个建议,只是为了防止难以理解的代码被粘贴到注释中而发布的一个答案
参考资料:
.
.
.
.
我想,你需要显示这个应用到的HTML。是否可能在.toggle\u按钮元素之后没有.info\u部分?或者您正在用上面一行中的.html调用来破坏它?试着改用.text。到底是什么问题?你的HTML看起来怎么样?仅当且仅当该元素的下一个同级具有class info_部分时,next才会返回元素。它不会返回带有class info_部分的下一个同级。@Orbling:html只影响内容,而不影响元素本身。发布您的实际代码后,我不知道您的问题是什么。我可以让它工作没有问题:但我所做的只是随机猜测你到底想做什么。发布HTML。或者更好地描述一下。next没有做什么,因为它做的正是文档所说的它应该做的。@Felix Kling:这一点很好,尽管考虑到所做的更改,它仍然会更好地使用.text。我想你需要显示它应用于的HTML。是否可能在.toggle\u按钮元素之后没有.info\u部分?或者您正在用上面一行中的.html调用来破坏它?试着改用.text。到底是什么问题?你的HTML看起来怎么样?仅当且仅当该元素的下一个同级具有class info_部分时,next才会返回元素。它不会返回带有class info_部分的下一个同级。@Orbling:html只影响内容,而不影响元素本身。发布您的实际代码后,我不知道您的问题是什么。我可以让它工作没有问题:但我所做的只是随机猜测你到底想做什么。发布HTML。或者更好地描述一下。next没有做什么,因为它做的正是文档所说它应该做的。@Felix Kling:这一点很好,不过考虑到所做的更改,还是使用.text更好。