Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery next()无法与live()一起使用_Jquery_Live_Next - Fatal编程技术网

jQuery next()无法与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'> &

当我尝试使用jquerynext方法时,它不适用于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_按钮嵌套,使得.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更好。