2013-06-25 68 views
0

我有jquery的選擇問題,我希望你能幫助我,我有一個列表,並且當刪除div時,我會給div新的id號碼0 -....jquery在div容器中的選擇

這個我用於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); 
}); 

但我始終是不確定的警報,你能給我一個提示嗎?

謝謝!

+2

使用類不重複的數字標識。這是他們設計的目的 - 防止這樣的頭痛。 –

回答

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對重複elments

1

使用類這種重複的結構,而不是IDS與迭代數。這是他們設計的目的 - 防止這樣的頭痛。

試試這個辦法來代替:

<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屬性,因爲它已經過時,而且意味着它需要改變該組的每一個具體的實例。

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

+0

:)我會改變我的ID的東西,謝謝! – JasperM