मैं किसी विशिष्ट आईडी के साथ पंक्ति पर क्लिक करते समय पंक्तियों का सबसेट छुपाने/दिखाने का प्रयास कर रहा हूं।क्लिक पर JQuery टॉगल पंक्तियां
वेब पर बहुत सारी खोजों और बहुत से प्रयासों के माध्यम से मुझे नीचे कोड मिला।
केवल कुछ ही कारणों से यह कोड पंक्तियों के पहले सेट को छिपाता/दिखाता है।
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Test</title>
<script src="http://code.jquery.com/jquery-1.5.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function()
{
$('#rowToClick').click(function()
{
$(this).nextAll('tr').each(function()
{
if ($(this).is('#rowToClick'))
{
return false;
}
$(this).toggle();
});
});
});
</script>
</head>
<body>
<table>
<tr id="rowToClick"><td>ClickMe</td></tr>
<tr id="Tr1"><td>Toggled</td></tr>
<tr id="Tr2"><td>Toggled</td></tr>
<tr id="Tr3"><td>Toggled</td></tr>
<tr id="Tr4"><td>Toggled</td></tr>
<tr id="Tr5"><td>Toggled</td></tr>
<tr id="rowToClick"><td>ClickMe</td></tr>
<tr id="Tr6"><td>Toggled</td></tr>
<tr id="Tr7"><td>Toggled</td></tr>
<tr id="Tr8"><td>Toggled</td></tr>
<tr id="Tr9"><td>Toggled</td></tr>
<tr id="Tr10"><td>Toggled</td></tr>
</table>
</body>
</html>
किसी के पास कोड का कोई सुझाव और/या संभव पुनर्लेखन है?
---------- अद्यतन - अंतिम समाधान -----------
मैं समाधान नीचे ब्रैंडन के इनपुट के आधार पर के साथ समाप्त हो गया, जैसा कि मैंने चाहता था एक ही व्यवहार के साथ अधिक घोंसले करने के लिए, एक संक्षिप्त पेड़ दृश्य की तरह। दुर्भाग्यवश इसका मतलब था कि मुझे राज्य का ट्रैक रखने के लिए एक अतिरिक्त विशेषता जोड़नी पड़ी, लेकिन मैं इसके साथ तब तक रह सकता हूं जब तक कि मुझे कोई दूसरा रास्ता न मिले (उदा। अगली पंक्ति की दृश्यता जांचें)।
$(document).ready(function() {
toggleRows('.module','.namespace');
toggleRows('.namespace','.type');
toggleRows('.type','.member');
});
function toggleRows(parentClass,subClass)
{
$(parentClass).click(function() {
if($(this).attr("value")=="collapsed")
{
$(this).attr("value","expanded");
$(this).nextUntil(parentClass).filter(subClass).toggle(true);
}
else
{
$(this).attr("value","collapsed");
$(this).nextUntil(parentClass).attr("value","collapsed");
$(this).nextUntil(parentClass).toggle(false);
}
});
}
क्या आपने टेबललेटर जैसे प्लगइन का उपयोग करने के बारे में सोचा है? http://blog.pengoworks.com/index।cfm/2008/3/28/समाप्त-jQuery-Tablesorter-mod-for-Collapsible-table-row – iivel
.attr() के बजाय .data() का उपयोग करें। इसका अधिक अनुपालन: '$ (यह)। डेटा (" मान ")' और '$ (यह)। डेटा (" मान "," विस्तारित ")'। साथ ही, DOM 2x: '$ (this) .nextUntil (parentClass) .data (" value "," collapsed ") स्कैनिंग से बचने के लिए अपनी कॉल को चेन करें। टॉगल (झूठा);' – Brandon