【问题标题】:jQuery Expand a tag not working correctlyjQuery展开标签无法正常工作
【发布时间】:2015-09-01 19:23:04
【问题描述】:

我一直在尝试使锚标记上的展开折叠功能起作用,但不知何故我遗漏了一些东西。我在这里浏览了几乎所有链接,但没有找到我的代码和帮助选项之间的区别。

我想要的只是单击任何行的“+”号进行简单的扩展。我正在我的 javascript 文件中动态构建 div。不知何故,我只能展开所有备用行。所以如果我的回复有 5 个元素,我只能每隔一行展开一次!有人可以告诉我有什么问题吗?

谢谢,

真由理

function DisplayResultsGrid(obj) {
    $.each(obj, function(index, item) {
        $("#divRequestDetails").append('<div class="requestDetailItem"><a href="#" class="lnkRequest"> + </a><div class="toggleDays">This is the text to expand</div></div>').append('<div class="rowSeparator"></div');
        $('.toggleDays').hide();
        $('.lnkRequest').click(function() {
            $(this).next('.toggleDays').toggle();
        });
    });
}

【问题讨论】:

标签: javascript jquery-ui collapse expand


【解决方案1】:

每次循环时,您都在向所有 .lnkRequest 元素添加点击。您没有将事件添加到当前事件。所以第一个会有第一次点击事件,加上下一个,再加上第三个,等等。

您需要在每个循环之外分配事件或使用事件委托。

function DisplayResultsGrid(obj) {
    $.each(obj, function(index, item) {
        $("#divRequestDetails").append('<div class="requestDetailItem"><a href="#" class="lnkRequest"> + </a><div class="toggleDays">This is the text to expand</div></div>').append('<div class="rowSeparator"></div');
    });
    $('.toggleDays').hide();
    $('.lnkRequest').click(function() {
        $(this).next('.toggleDays').toggle();
    });
}

【讨论】:

  • 这对 Epascarello 有效!!!非常感谢。我在每个循环之外都有事件,但在取消更改时意外地将其添加回来。再次感谢...
猜你喜欢
  • 2018-05-02
  • 1970-01-01
  • 2014-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多