0

我有一个 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

4 回答 4

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 来重复元素

于 2013-06-25T11:54:20.933 回答
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属性,因为它已过时,这意味着它需要针对组的每个特定实例进行更改。

于 2013-06-25T11:54:46.330 回答
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);
});
于 2013-06-25T11:56:22.210 回答
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);
});

演示

于 2013-06-25T11:56:55.467 回答