/ / JQuery का उप-चयन अपेक्षित रूप से काम नहीं कर रहा है - jquery, jquery-selectors

JQuery का उप-चयन अपेक्षित काम नहीं कर रहा है - jquery, jquery-selectors

मेरे पास एक पृष्ठ कई है divके तरीके से है

<div id="{{ myId }}" class="typelist"><!-- content goes here --></div>

इसके अलावा, निम्नलिखित तरीकों से "लिंक" की एक सूची है:

<a href="#" onclick="showThis({{ myId }})">{{ myDescriptiveName }}</a>

संवाददाता JS-part इस तरह दिखता है:

function showThis(id) {
var divs = $("div.typelist");
divs.hide();
divs.find("#" + id).show();
}

मैं क्या करना चाहता हूं, आईडी के साथ div की खोज करें id वर्तमान चयन में और इसे "दृश्यमान" पर टॉगल करें। मैं अब समझ गया हूँ, कि find() केवल बच्चों और "पोते" के लिए खोज करता है, जो बताता है कि उपरोक्त अपेक्षा के अनुरूप काम क्यों नहीं करता है।

लेकिन, मुझे वांछित कैसे ठीक से मिलता है divवर्तमान चयन के अंदर? Googling ने मुझे कोई उपयोगी जानकारी नहीं दी।

उत्तर:

उत्तर № 1 के लिए 4

यह होना चाहिए

function showThis(id) {
var divs = $("div.typelist");
divs.hide();
$("#" + id).show();
//or divs.filter("#" + id).show();
//or divs.filter("[id="" + id + ""]").show();
}

जब आप उपयोग करते हैं .find (), यह वंशज के लिए लग रहा है divs तत्वों, लेकिन आपके मामले में आप जिस तत्व की तलाश कर रहे हैं वह बीच में है divs तत्वों।

इस मामले में आपको उपयोग करने की आवश्यकता है .filter () के बजाय .find (), लेकिन चूंकि इस मामले में आपके पास आईडी है तो आप सीधे उपयोग कर सकते हैं आईडी-चयनकर्ता


उत्तर № 2 के लिए 1
function showThis(id) {
var divs = $("div.typelist");
divs.hide();
$("#" + id, divs).show();
}

यह आपके चयन में आईडी की तलाश करता है। लेकिन आपकी आईडी वैसे भी अनोखी होनी चाहिए। तो अरुण पी जॉनी का जवाब सबसे अच्छा है।