【发布时间】:2014-07-02 02:59:35
【问题描述】:
我有下面的 HTML 是从 Ajax 成功返回的,到目前为止,我一直在尝试做但没有成功的是循环遍历 div 获取 div id,然后在用户单击后在 jquery 对话框上为每个按钮创建一个按钮按钮 div 中的 HTML 将应用于表单。
下面的代码有效,但我必须过滤掉每个按钮的内容,但并不总是相同数量的 div,一个人可能没有,另一个人可能有 5 个
我尝试过使用 jquery.each
我想有人会知道如何循环思考这些 div 并为每个 div 创建一个按钮变量
HTML
<div class="target" id="1" >
<p id="A1">04:00</p>
<p id="A2">15:00</p>
<p id="A3">00:16</p>
<p id="A4">2</p>
<p id="A5">10</p>
<p id="A6">2</p>
<p id="A7">10.73</p>
<p id="A8">430.01</p>
<p id="A9">0</p>
<p id="NS">0</p>
<p id="A10">0</p>
<p id="A11" >0.73</p>
<p id="B1" >448</p>
<p id="B2" >found</p>
</div>
<div class="target" id="2" >
<p id="A1">05:00</p>
<p id="A2">13:00</p>
<p id="A3">00:25</p>
<p id="A4">3</p>
<p id="A5">10</p>
<p id="A6">2</p>
<p id="A7">7.58</p>
<p id="A8">263.71</p>
<p id="A9">0</p>
<p id="NS">0</p>
<p id="A10">0</p>
<p id="A11" >0.00</p>
<p id="B1" >447</p>
<p id="B2" >found</p>
</div>
<div class="target" id="3" >
<p id="A1">05:00</p>
<p id="A2">12:00</p>
<p id="A3">01:00</p>
<p id="A4">3</p>
<p id="A5">06</p>
<p id="A6">2</p>
<p id="A7">6.00</p>
<p id="A8">265.62</p>
<p id="A9">0</p>
<p id="NS">0</p>
<p id="A10">0</p>
<p id="A11" >0.00</p>
<p id="B1" >446</p>
<p id="B2" >found</p>
</div>
JQUERY
success:function(html){
var button1 = {
text: "Edit "+$($(html).filter('#1').html()).filter('#A1').text(),click: function() {
var start = $($(html).filter('#1').html()).filter('#A1').text();
$("#start").val(start);
var finish = $($(html).filter('#1').html()).filter('#A2').text();
$("#finish").val(finish);
var breaktime = $($(html).filter('#1').html()).filter('#A3').text();
$("#break").val(breaktime);
var grade = $($(html).filter('#1').html()).filter('#A4').text();
$("#grade").val(grade);
},
var button2 = {
text: "Edit "+$($(html).filter('#2').html()).filter('#A1').text(), click: function() {
var start = $($(html).filter('#2').html()).filter('#A1').text();
$("#start").val(start);
var finish = $($(html).filter('#2').html()).filter('#A2').text();
$("#finish").val(finish);
var breaktime = $($(html).filter('#2').html()).filter('#A3').text();
$("#break").val(breaktime);
var grade = $($(html).filter('#2').html()).filter('#A4').text();
$("#grade").val(grade);
},
}
【问题讨论】:
-
您可以使用
each,但事先检查length以确保他们有一些? -
这种当前的方法很疯狂。查看代码的结构。您是否要告诉它跳过每 4 个元素以查找开始/完成/中断/等级?更好的方法是有一个
p标签,它有一个id,然后一个start/finish/break/grade作为span标签,你可以很容易地循环。我会做一个小提琴。 -
好吧,那太好了,我一直是 Ohgodwhy 我知道它一团糟,这就是为什么我想找到一个更好的方法,如果你能做一个有用的小提琴
-
@Anthony
html,似乎在同一document中包含 3id="A1"?或者,不同的ajax响应?见"id = name [CS] This attribute assigns a name to an element. This name must be unique in a document."w3.org/TR/1999/REC-html401-19991224/struct/global.html#adef-iddeveloper.mozilla.org/en-US/docs/Web/API/Element.id
标签: javascript jquery ajax