我坚持这种愚蠢的问题。我看到了我的问题的例子,但似乎我找不到正确的循环。无论如何,我最好提供一些例子:
<table border="1" id="inline" class="<?=$id?>" style="background:none;">
<tr id="border<?=$id?>">
<td rowspan="2" style="max-width:420; width:420" valign="top">
<form id="feedback<?=$id?>" <? if(!$check){?>style="display:none"<? }?>>
<textarea cols="40" class="editor" id="editor<?=$id?>" name="editor1" rows="10"><?=$text?></textarea>
<table style="background:none"><tr><td><input type="button" value="Save" id="submit<?=$id?>"></td><td><img id="spinner<?=$id?>" height="25" style="display:none"></td></tr></table>
</form>
<div id="content<?=$id?>"<? if($check){?> style="display:none"<? }?>><?=$text?></div>
</td>
<td style="border-width:0">
Title:<br>
<div id="title_div<?=$id?>"<? if($check){?> style="display:none"<? }?>><?=$title?></div><input type="text" id="title<?=$id?>" value="<?=$title?>"<? if(!$check){?> style="display:none"<? }?>>
</td>
</tr>
<tr>
<td style="border-width:0" valign="top">
<div id="uploader<?=$id?>"<? if(!empty($img)){?> style="display:none<? }?>">
<input id="upload<?=$id?>" name="upload" type="file" />
</div>
<div id="div_holder<?=$id?>">
<? draw_buttons($id);?>
<a title="<?=$title?>" <? if(!empty($img)){?> href="images/people/<?=$img?>"<? }?> id="feedback_img<?=$id?>" class="lightbox"><img border="0"<? if(!empty($img)){?> src="images/people/timthumb.php?src=<?=$img?>&w=200&q=100"<? }else{?> style="display:none"<? }?> id="img_holder<?=$id?>"></a></div><img id="jcrop<?=$id?>" style="display:none" />
</td>
</tr>
</table>
这是我的php脚本的一部分,其中$ id来自数据库。 ID是数字,因此所有表ID仅与数字不同,例如:
<tr id="border1">
//next table tr
<tr id="border2">
所有表都来自数据库并在循环中显示。可以删除ID,因此它们的顺序可以是1,3,4,6等等。但是有一个已知$ id ='0'的隐藏表,例如:
<tr id="borderzero">
还有一个id为零的div元素,上面显示的是该元素。所以我的问题是 - 我需要更改id为零的div中每个元素的id,例如:
<tr id="borderzero">
//change to
<tr id="border5">
当然我可以一个一个地输入它们,但我正在尝试使用.each函数,虽然我失败了,但我希望能得到一些帮助。这就是我的意思:
$("div#zero").clone().attr({'id' : feedback_id}).appendTo("#temp_holder").fadeIn('slow');
$('#' + feedback_id + ":not(td)").contents().each(function() {
if($("[id*='zero']").length > 0){
var new_id = $(this).attr('id');
new_id = new_id.replace('zero', some_id);
$(this).attr({'id' : new_id});
}
});
Var feedback_id通过从数据库中获取的ajax,它的值是最后一个表id +1。
答案 0 :(得分:1)
尝试替换它:
if($("[id*='zero']").length > 0)
用这个:
if( this.id.match(/zero$/ig) )
答案 1 :(得分:0)
好的,我找到了一种真正获得所有元素的方法。第一个答案很有帮助,谢谢,但也必须将.contents()更改为.find('*')。因此,如果有人需要,工作脚本看起来像这样:
$("div#zero").clone().attr({'id' : feedback_id}).appendTo("#temp_holder").fadeIn('slow');
$('#' + feedback_id + ":not(td)").find('*').each(function() {
if(this.id.match(/zero$/ig)){
var new_id = $(this).attr('id');
new_id = new_id.replace('zero', some_id);
$(this).attr({'id' : new_id});
}
});