सभी को छिपाएं लेकिन $ (इस) के माध्यम से: jQuery के चयनकर्ता में नहीं


97

उन्नत शीर्षक, सरल प्रश्न:

मैं jQuery में निम्नलिखित कैसे कर सकता हूं (सब कुछ छोड़कर $(this))?

$("table tr").click(function() {
    $("table tr:not(" + $(this) + ")").hide();
    // $(this) is only to illustrate my problem

    $("table tr").show();
});

जवाबों:



157
$("table.tr").not(this).hide();

एक तरफ के रूप में, मुझे लगता है कि आप मतलब है $("table tr")(एक डॉट के बजाय एक स्थान के साथ)।
जिस तरह से आपके पास है, यह हर उस तालिका का चयन करता है जिसमें tr(जैसे <table class="tr">) की एक कक्षा होती है, जो कि शायद आप नहीं चाहते हैं।

अधिक जानकारी के लिए, दस्तावेज़ देखें ।


हाँ, यह डॉट के साथ एक गलती थी। मैं किसी भी तरह यह देखने में विफल हूं कि यह अलेक्जेंडर्स समाधान की तुलना में आसान कैसे है, जो अधिक साफ लगता है। मुझे पता है कि मैंने पूछा कि इसे कैसे करना है: नहीं, लेकिन भाई-बहन का तरीका ज्यादा साफ-सुथरा लगता है।
कोर्डोनमे

3
बस जोड़ने के लिए, यदि आप कोशिश करने के लिए तालिका के भीतर कुछ क्लिक कर रहे हैं और इसे प्राप्त करने के लिए सभी तालिका पंक्तियों को छिपाने के लिए उस पंक्ति को छोड़ दें जिसमें आपके द्वारा क्लिक की गई आइटम है, तो उपयोग करें:$('tr').not($(this).closest('tr')).hide();
जिम्बो

3
यह विशिष्ट तत्वों के चयन के लिए उपयोगी है, अगर भाई-बहन की अनुमति देने की तुलना में संरचना अधिक जटिल है। मुझे एक उदाहरण के साथ आने में कठिन समय हो रहा है, लेकिन शायद कुछ ऐसा है जहाँ आप ग्रिड के अंदर चीजों को छिपाना चाहते हैं, लेकिन ग्रिड को नहीं।
goodeye

6

यदि आप कुछ अन्य चयनकर्ताओं के साथ संयोजन नहीं करना चाहते हैं, तो आप ऐड () का उपयोग कर सकते हैं:

$('a').click(function(e){
  $('a').not(this).add('#someID, .someClass, #someOtherID').animate({'opacity':0}, 800);
});

यह अन्य सभी लिंक को फीका कर देगा, लेकिन क्लिक किए गए, और इसके अलावा कुछ चुने हुए आईडी और कक्षाओं को भी फीका कर देगा।


0

मुझे लगता है कि एक समाधान यह हो सकता है:

$("table.tr").click(function() {
    $("table.tr:not(" + $(this).attr("id") + "").hide(); // $(this) is only to illustrate my problem
    $(this).show();
})

- टिप्पणी के लिए संपादित करें:

$("table.tr").click(function() {
    $("table.tr:not(#" + $(this).attr("id") + ")").hide(); // $(this) is only to illustrate my problem
    $(this).show();
})

आपका मतलब है :not(#" + ...। इसके अलावा, यह तब तक काम नहीं करेगा जब तक कि तत्व में आईडी न हो, जिसकी संभावना नहीं है।
13

3
इसके लिए आपको अपनी सभी तालिका पंक्तियों (या जो भी आप उपयोग कर रहे हैं) पर यादृच्छिक और अनावश्यक आईडी जोड़ना होगा।
निकफ

@ SLaks, सुधार के लिए धन्यवाद। डॉव पर, आपके मन में हो सकता है कि कभी-कभी हम जो चाहते हैं वह मदद के लिए त्वरित उत्तर हो। हम जो कहते हैं उसे हल्के में क्यों नहीं लेते।
andres descalzo

@nickf, हां, आप सही कह रहे हैं, लेकिन यह टिप्पणी सबसे पहले एक @Kordonme से पूछना अच्छा होगा यदि उनके पास प्रत्येक TR के लिए ID है।
andres descalzo
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.