Tôi đã một hàm jQuery mà Toggles khả năng hiển thị các nội dung của một fieldset khi huyền thoại của nó được nhấp, để lại chỉ là biên giới fieldset (nếu có) và truyền thuyết cho thấy:sụp đổ fieldset khi yếu tố huyền thoại nhấp
$('legend.togvis').click(function() {
$(this).siblings().toggle();
return false;
});
Nó hoạt động tốt trừ khi trường có chứa các nút văn bản.
<fieldset><legend class='togvis'>Click Me</legend>
<p>I toggle when the legend is clicked.</p>
But I'm a recalcitrant text node and refuse to toggle.
</fieldset>
Trong một nỗ lực để chuyển đổi văn bản các nút quá Tôi cố gắng này:
$('legend.togvis').click(function() {
$(this).parent().contents().not('legend').toggle();
return false;
});
mà hoạt động giống như chức năng đầu tiên. Và điều này:
$('legend.togvis').click(function() {
$(this).parent().contents(":not(legend)").toggle();
return false;
});
mà ném lỗi
Message: 'style.display' is null or not an object
Line: 5557
Char: 3
Code: 0
URI: http://code.jquery.com/jquery-1.4.4.js
Bất kỳ suy nghĩ về cách để có được những toàn bộ nội dung của một fieldset (trừ huyền thoại) để chuyển đổi khi truyền thuyết được nhấp?
ETA Solution, với nhiều nhờ Eibx
$('legend.togvis').click(function() {
$(this).parent().contents().filter(
function() { return this.nodeType == 3; }).wrap('<span></span>');//wrap any stray text nodes
$(this).siblings().toggle();
});
dường như vấn đề là các nút văn bản không/không thể có kiểu. Vì '.toggle()' hoạt động bằng cách ảnh hưởng đến css của nút, nó không thể ảnh hưởng đến các nút văn bản. Có lẽ tôi cần phải lưu trữ nội dung của fieldset trong '.data()' và sau đó loại bỏ trẻ em? – dnagirl