我在这里的第一篇文章。我不是JQuery的新手,但我发现复杂的编码非常困难(当然!)。我会尽可能清楚地解释我的问题。我正在使用 elgg ,所以这里的一些代码将是elgg特定的。那不是问题。
我正在创建一个页面,允许我的用户向某些内容添加问题。他们可以使用以下方法添加问题:
echo "<div id='ques_holder'>";
echo "<table><tr><td style='width:380px;padding-right:10px;'>";
echo "<b>Question:</b> ";
echo elgg_view("input/text", array('internalname' => 'ques_','internalid' => 'ques_'));
echo "</td><td style='width:90px;'>";
echo "<b>Answer:</b> ";
echo elgg_view("input/pulldown", array('internalname' => 'ans_','internalid' => 'ans_', 'options_values' => array('true' => 'True', 'false' => 'False')));
echo "</td></tr></table>";
echo "</div>";
我现在希望能够一次添加多个问题,因此我使用以下克隆代码来完成此任务:
var quescount = 0;
function add_question() {
quescount++;
var clone = $("#ques_holder").clone(false);
$("*", clone).add(clone).each(function() {
if (this.id) {
this.id = this.id + quescount;
}
if (this.name) {
this.name = this.name + quescount;
}
});
$("#interact_input_questions_adder").append(clone);
}
这一切都很好。添加了新问题,并使用数字(问号)及其子元素更新其ID和名称。问题来自以下部分。 我正在尝试将所有输入名称和值组合在一起,以便通过ajax发送到php文件。这是我的代码破解的地方。我正在尝试一个双.each()调用(一个在另一个内),但我的编码中的某些东西不起作用。代码如下:
function save_questions(){
var qrange = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
var activity = "<?php echo $activity;?>";
datastr = "&activity=" + activity;
jQuery.each(qrange , function(index,value){
$("#ques_holder"+value).find('input').each(function(){
datastr += $(this).attr('name');
});
});
alert(datastr);
}
需要考虑的事项
每次输入的输入类型都可能发生变化(我给出的输入只是一个例子)
elgg编码不会破坏事物
qrange 数组只是为了限制问题的数量(我还没有把它添加到add_question()函数中)
我想我想知道的是......你能在jQuery.each()里面做一个.each(),根据我的编码,我怎样才能得到所有这些输入的名字在每个电话里面?
任何帮助非常感谢。不要害怕因为我的丑陋编码而嘲笑我,我通过stackoverflow等网站的试错来自学。 ;)
编辑:经过严厉的面部护理后,我意识到错误是因为我不应该使用“onclick”。最后的内容如下,实际上由 RightSaidFred 提供,由于某种原因,他们删除了他的答案。
function save_questions(){
var qrange = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
var activity = "<?php echo $vars['activity'];?>";
datastr = "&activity=" + activity;
jQuery.each(qrange , function(index,value){
$("#ques_holder"+value).find('input').each(function(input_idx, input){
datastr += "&" + $(input).attr('name') + "=" + $(input).attr('value');
});
});
alert(datastr);
}
答案 0 :(得分:0)
为什么不给全部的问题&#39; divs,例如
<div id='ques_holder' class='holder'>
然后,你只需要分别做一个来获取所有输入
$("div.holder input").each(function() {
var name = $(this).attr('name'); // if you need the name
var val = $(this).val(); // if you need the value
var parent = $(this).closest('div.holder').attr('id'); // if you need to know the parent number
});