在Div容器中使用jquery进行选择

时间:2013-06-25 11:48:50

标签: jquery

我有jquery的选择问题,我希望你可以帮助我,我有一个列表,当删除div时我会给div新的id号0 -....

这用于php数组和会话。

我的HTML:

<div id="rezeile_1" class="lcolumn">
    <div class="lrow">
        <input id="zid_1" type="hidden" value="1">
        <input id="zre_1" type="hidden" value="1">
        <input id="ztext_1" type="hidden" value="test 1"> 
        <a onclick="remove('rezeile_1')" href="#one">(-)</a>
    </div>
</div>
<div id="rezeile_2" class="lcolumn">
    <div class="lrow">
        <input id="zid_2" type="hidden" value="2">
        <input id="zre_2" type="hidden" value="2">
        <input id="ztext_2" type="hidden" value="test 2"> 
        <a onclick="remove('rezeile_2')" href="#one">(-)</a>
    </div>
</div>

现在我想用jquery选择用于更改属性的输入

现在这是我的jquery:

$('[id^=rezeile_]').each(function () {
    var temp = $(this).next('div > [id^=ztext_]').val();
    var attrib1 = $(this).next('div > [id^=ztext_]').attr('id');
    var attrib2 = $(this).next('div > [id^=zre_]').attr('id');
    alert(temp);
    alert(attrib1);
    alert(attrib2);
});

但我总是变成未定义的警报,你能给我一个提示吗?

谢谢你!

4 个答案:

答案 0 :(得分:3)

试试这个;

小提琴:http://jsfiddle.net/kjSbj/

$('[id^=rezeile_]').each(function (index,val) {
    var temp = $(val).find('div > [id^=ztext_]').val();
    var attrib1 = $(val).find('div > [id^=ztext_]').attr('id');
    var attrib2 = $(val).find('div > [id^=zre_]').attr('id');
    alert(temp);
    alert(attrib1);
    alert(attrib2);
});

但是我建议你使用类而不是id来重复元素

答案 1 :(得分:1)

使用类来表示这种重复结构,而不是使用迭代数字的ID。这是他们的目的 - 防止这样的头痛。

请尝试使用此方法:

<div id="rezeile_1" class="lcolumn rezeile">
    <div class="lrow">
        <input class="zid" type="hidden" value="1">
        <input class="zre" type="hidden" value="1">
        <input class="ztext" type="hidden" value="test 1"> 
        <a href="#one" class="remove">(-)</a>
    </div>
</div>
<div id="rezeile_2" class="lcolumn rezeile">
    <div class="lrow">
        <input class="zid" type="hidden" value="2">
        <input class="zre" type="hidden" value="2">
        <input class="ztext" type="hidden" value="test 2"> 
        <a href="#one" class="remove">(-)</a>
    </div>
</div>
$('.rezeile').each(function () {
    var temp = $('.ztext', $(this)).val(); // gets the ztext value for the current instance of .rezeile
    alert(temp);
}); 

$('.remove').on('click', function(e) {
        e.preventDefault();
    $(this).closest('rezeile').remove();
});

另请注意,我删除了onclick属性,因为它已过时,并且意味着需要更改该组的每个特定实例。

答案 2 :(得分:0)

试试这个:

$('[id^=rezeile_]').each(function () {
    var temp = $(this).find('input[id^=ztext_]').val();
    var attrib1 = $(this).find('input[id^=ztext_]').attr('id');
    var attrib2 = $(this).find('input[id^=zre_]').attr('id');
    alert(temp);
    alert(attrib1);
    alert(attrib2);
});

答案 3 :(得分:0)

如果您坚持要保留疯狂的ID选择器:

$('[id^=rezeile_]').each(function () {
    var $this = $(this); 
    var temp = $('div > [id^=ztext_]', $this).val();
    var attrib1 = $('div > [id^=ztext_]', $this).attr('id');
    var attrib2 = $('div > [id^=zre_]', $this).attr('id');
    alert(temp);
    alert(attrib1);
    alert(attrib2);
});

DEMO