【问题标题】:Dynamically adding extra row into jquery accordion将额外的行动态添加到 jquery 手风琴中
【发布时间】:2013-11-11 16:06:47
【问题描述】:

我想对如何动态控制手风琴有一些疑问。

当单击添加按钮时,我应该再添加一行子手风琴和 单击删除按钮将删除手风琴的最后一行。

然后我有一个问题如何控制它。

我的源代码如下。

JS:

$("#addResolution").click(function (e) {
    alert("Add new resolution. ");
});

$("#removeResolution").click(function (e) {
    alert("Remove new resolution. ");
});


                <h3><a href="#" class="editor-label">
                    @Html.LabelFor(model => model.Resolution)
                </a></h3>
                <div>
                    <button class="ui-button ui-button-text-only ui-widget ui-state-default ui-corner-all" id="addResolution">
                        <span class="ui-button-text">ADD</span>
                    </button>
                    <button class="ui-button ui-button-text-only ui-widget ui-state-default ui-corner-all" id="removeResolution">
                        <span class="ui-button-text">DEL</span>
                    </button>
                    <div id="accordionSub">
                        <h3><a href="#" class="editor-label">
                             @Html.LabelFor(model => model.Resolution)
                        </a></h3>
                        <div class="editor-field">    
                            @Html.EditorFor(model => model.Resolution,
                            new
                            {
                                style = "width:" + 100 + "%; height:" + 5 + "em;"
                            }) 
                            @Html.ValidationMessageFor(model => model.Resolution)

                            <br />
                            <label id="lblFileUploadResolution">Choose Image File</label>
                            <input type="file" name="uploadFile" id="fileToUploadResolution" style="width:89%;" accept="image/png, image/gif, image/jpeg, image/bmp" />
                            <input type="button" id="btnFileUploadResolution" value="Upload" style="width:10%;" />
                        </div>
                    </div>
                </div>

当我点击添加按钮时,动态添加一列并增加手风琴子 ID(例如:accordian1、accordian2、accordian3)

然后点击删除按钮,然后删除最后一行。

请帮帮我,谢谢!

【问题讨论】:

  • 您可以发布您尝试过的内容吗?
  • 抱歉,我还没来得及放图片。我只想单击添加或删除按钮并添加更多手风琴,如 div id

标签: javascript html jquery-ui jquery


【解决方案1】:

如果我理解正确,从您对上一个答案的评论看来,您在使用 razor 生成的代码时遇到问题,例如:

@Html.LabelFor(model => model.Resolution)

显然,由于该代码是服务器端的,因此您需要客户端解决方案。

一种选择是使用 jquery clone 来克隆元素,给克隆一个唯一的 id 然后追加它...see here for an example

所以你会做这样的事情:

var clone = $('#accordionSub').clone();
clone.attr('id', 'id1').insertAfter($('#accordionSub'));

这完全未经测试,但希望能为您指明正确的方向。我已将新 id 硬编码为“id1”,但显然您需要计算出新元素的 id 应该是什么。

【讨论】:

  • 您好,非常感谢您的回答,您完全理解我的意思,它是 MVC 模型。在完成视图侧后,我将尝试处理模型侧。我已经按照你的指导去做了。在我单击添加按钮后,它将生成更多手风琴。但是,里面没有内容(甚至认为点击手风琴,什么都没有发生)你对此有什么想法吗?谢谢!
  • 看起来像禁用..如果我打开手风琴的原始并单击添加,那么它是相同的克隆打开,但我不能做任何像禁用这样的事情
  • @clear.choi - 我不完全确定你的意思......也许如果你再解释一下,我会更好地理解。
  • 哦,对不起,我已经复制了,它已经显示了添加的项目。但是,该复制的项目不能做任何看起来像禁用的事情。最初,如果我单击手风琴,它会扩展并显示在 MODEL 部分中定义的消息和一些事件,但是复制的项目不执行任何操作..
  • 如果我这样做 --> alert("Add new resolution."); var clone = $('#accordionSub').clone(true); //clone.attr('id', 'accordionSub1').insertAfter($('#accordionSub')); clone.attr('id', 'accordionSub1'); clone.appendTo("#accordionSub"); ---> 它可以工作并扩展复制的手风琴,但在元素内部它看起来像禁用我无法编辑和执行某些事件。
【解决方案2】:

我想你想要这个

$('#addAccordion').click( function() {
    var newDiv = "<div><h3>Q2 New Question</h3><div>New Content</div></div>";
    $('#accordionSub').append(newDiv)
    $('#accordionSub').accordion("refresh");        
});
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-08
相关资源
最近更新 更多