JQuery循环遍历div并根据数据属性构建多行字符串

时间:2015-05-20 23:00:43

标签: javascript jquery html css

我有两个问题:

1。)正如您所看到的,我有多个div,当点击onclick callout panel notes时,我有div件事情。它访问data-category属性。我正在使用

$(this).parent().parent().siblings().first().data("category");

要访问它,哪个有效,但看起来很乱。我试过parents().last().data(...),但从未奏效。我觉得这是一种更有效的方式。所以任何意见将不胜感激。

2。)我的下一个问题我无法弄明白。一些div具有selected类(在我点击div之后)。之后我会点击一个按钮来抓取所选的东西,并通过一些ajax的东西发送它。还有其他5个"类别"所以我需要将.selected内容与data-category="a"相关联,即我需要确保它只与该类别循环。任何人都可以帮助我遍历data-category="a"并使用data-response-text类的.selected构建一个多行字符串吗?

html如下:

<div class="row responses panel">
    <div class="small-12 column" data-category="a">
        <h3>Responses</h3>
    </div>

    <div class="small-12 column">
        <div class="callout panel notes" data-response-text="Info 1">
        Info 1
        </div>
    </div>

    <div class="small-12 column">
        <div class="callout panel notes selected" data-response-text="Info 2">
        Info 2
        </div>
    </div>

    <div class="small-12 column">
        <div class="callout panel notes selected" data-response-text="Info 3">
        Info 3
        </div>
    </div>

    <div class="small-12 column">
        <div class="callout panel notes selected" data-response-text="Info 4">
        <div class="remove-response"></div>
        Info 4
        </div>
    </div>

    <div class="small-12 column">
        <div class="add-new-box">
            <div class="add-new">
            Add Response
            </div>
            <div class="add-new-text">
                <input class="text-response" type="text" placeholder="Response">
            </div>
        </div>
    </div>

</div>


<div><span class="button">Submit</span></div>

2 个答案:

答案 0 :(得分:1)

对于第一部分,您可以这样做:

build.sbt

如果chisel-dependent.sbt$(this).closest('.row.responses').children(':first').data('category'); 对于该级别元素是唯一的,那么您可以单独使用它。

对于第二部分,我假设“与数据类别相关联的内容”是指第{f}个元素具有.row的元素.responses。如果是这样,那么你可以这样做:

.row.responses

答案 1 :(得分:1)

第一个问题:我会像这样选择面板:

$(this).find('[data-category]').data();

然后我会创建一个在每个面板上调用的函数,然后从.selected

返回所需数据的数组
        function getData(panel) {
            var $selected = $(panel).find('.selected');
            var dataArr = [];
            for (var i = 0; i < $selected.length; i++) {
                dataArr.push($selected.eq(i).data().responseText);
            }
            return dataArr;
        }

        var panelData = getData($('the-panel-in-question'));