我有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);
});
但我总是变成未定义的警报,你能给我一个提示吗?
谢谢你!答案 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);
});