jQuery扩展标记无法正常工作

时间:2015-06-16 19:38:59

标签: javascript jquery-ui collapse expand

我一直试图让锚标记上的展开折叠工作,但不知怎的,我错过了一些东西。我在这里查看了几乎所有链接,但没有找到我的代码和帮助选项之间的区别。

我想要的只是点击" +"任何一行的标志。我正在我的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();
        });
    });
}

1 个答案:

答案 0 :(得分:0)

每次循环时,您都会向所有.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();
    });
}