jQuery更改div中的元素

时间:2011-02-18 17:06:44

标签: jquery

我坚持这种愚蠢的问题。我看到了我的问题的例子,但似乎我找不到正确的循环。无论如何,我最好提供一些例子:

<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。

2 个答案:

答案 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});
            }
    });