जब मैं बटन पर क्लिक करता हूं तो मैं उसके लिए h2 मान प्राप्त करना चाहता हूं जो मैंने किया वह एक चर का उपयोग किया जाता है

var getClassName = $(this).closest('div').attr('class'); 

जिसने मुझे अपना मूल वर्ग दिया, अब मेरे पास मूल वर्ग है जिसे मैं प्राप्त करने का प्रयास कर रहा हूं h2, इसलिए मैंने कोशिश की है

var getH2Val= $('.'+getClassName+' h2').val(); 

जो मुझे अपरिभाषित मूल्य देता है।

<div id="search-7" class="section-1">
    <h2>Test head</h2>
    <p>test paragraph</p>
    <p><a class="testclass" href="#test2"><button>button</button> </a></p>
</div>

<div id="search-8" class="section-1">
    <h2>Test head</h2>
    <p>test paragraph</p>
    <p><a class="testclass" href="#test2"><button>button</button>    </a></p>
 </div>
1
Sam 9 जिंदा 2019, 21:03

2 जवाब

सबसे बढ़िया उत्तर

आपका closest() तर्क सही है। फिर भी आपको h2 को पुनः प्राप्त करने के लिए उस तत्व के भीतर find() की आवश्यकता है। यह भी ध्यान दें कि h2 तत्वों का कोई 'मान' नहीं है। उनके भीतर के पाठ को पुनः प्राप्त करने के लिए text() का उपयोग करें।

अंत में ध्यान दें कि आप button तत्व को a के भीतर नहीं रख सकते, क्योंकि नेस्टेड क्लिक करने योग्य तत्व HTML में अमान्य हैं। जैसे कि मैंने नीचे दिए गए उदाहरण में a तत्व को हटा दिया क्योंकि इसकी आवश्यकता नहीं है।

$('button').click(function() {
  var h2Text = $(this).closest('div').find('h2').text();
  console.log(h2Text);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="search-7" class="section-1">
  <h2>Test head #1</h2>
  <p>test paragraph</p>
  <p><button>button</button></p>
</div>

<div id="search-8" class="section-1">
  <h2>Test head #2</h2>
  <p>test paragraph</p>
  <p><button>button</button></p>
</div>
5
Rory McCrossan 9 जिंदा 2019, 21:06

एक अन्य दृष्टिकोण, जो आपके कोड के समान है, माता-पिता id विशेषता प्राप्त करना होगा (क्योंकि उन्हें दस्तावेज़ पर अद्वितीय होना चाहिए)। ध्यान दें कि चयनकर्ता पर class विशेषता का उपयोग करने से यह सुनिश्चित नहीं होगा कि आप एक अद्वितीय तत्व से मेल खाएंगे।

$('button').click(function()
{
    var parentID = $(this).closest('div').attr('id');
    var h2Text = $('#' + parentID + ' h2').text();
    console.log(h2Text);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="search-7" class="section-1">
  <h2>Test head #1</h2>
  <p>test paragraph</p>
  <p><button>button</button></p>
</div>

<div id="search-8" class="section-1">
  <h2>Test head #2</h2>
  <p>test paragraph</p>
  <p><button>button</button></p>
</div>
1
Shidersz 9 जिंदा 2019, 21:19