मैं jQuery का उपयोग करके HTML की एक स्ट्रिंग से विभिन्न HTML टैग्स को फ़िल्टर करने का प्रयास कर रहा हूं। यहाँ मेरा कोड अभी कैसा दिखता है:

$.get("check-in.php", {value: inputValue}).done(function(data) {
  var checkinSuccessStr = $("<p/>", { html: data }).find("#success").html();
  var checkinFailStr = $("<p/>", { html: data }).find("#fail").html();
  var tr = $("<tr/>", { html: data }).find("tr").html();

  console.log(checkinSuccessStr); // >> Success String
  console.log(checkinSuccessStr); // >> Failure String
  console.log(tr); // >> undefined
}

जहां check-in.php निम्नलिखित HTML प्रस्तुत करेगा:

"<p id='success'>Success String</p>
<p id='fail'>Failure String</p>
<tr><td>Table cell</td><td>Another cell</td></tr>"

JQuery में checkinSuccessStr और checkinFailStr प्राप्त करना ठीक काम करता है, लेकिन तालिका पंक्ति नहीं। मैंने परिणामी tr चर पर $.parseHTML का उपयोग करने का प्रयास किया, लेकिन कोई सफलता नहीं मिली। मैं HTML टेक्स्ट से <tr> तत्व (या सरणी के रूप में तत्व या <tr>s ) प्राप्त करने के लिए क्या कर सकता हूं, या तो स्ट्रिंग या DOM तत्व के रूप में?

-1
Curtis Upshall 11 जुलाई 2018, 00:50

2 जवाब

उत्तर:

HTML पूरी तरह से मान्य नहीं है क्योंकि <tr> जरूरी है है <table> (या <thead>, <tbody>, या <tfoot>) माता-पिता के रूप में, इसलिए पार्स किए गए प्रतिनिधित्व में कोई <tr> टैग नहीं है .

<tr> को <table> में लपेटने से समस्या ठीक हो जानी चाहिए (आदर्श रूप से PHP में, लेकिन, सबसे खराब स्थिति, स्ट्रिंग को पार्स करने से पहले)।

डेमो:

आप इसे <table> रैपर के साथ/बिना स्निपेट के jQuery के पार्स किए गए प्रतिनिधित्व को प्रिंट करके क्रिया में देख सकते हैं:

console.log("Broken:", $(`
<p id='success'>Success String</p>
<p id='fail'>   Failure String</p>
<tr>
    <td>Table cell</td>
    <td>Another cell</td>
</tr>
`).find("tr").html());

console.log("Fixed:", $(`
<p id='success'>Success String</p>
<p id='fail'>   Failure String</p>
<table>
    <tr>
        <td>Table cell</td>
        <td>Another cell</td>
    </tr>
</table>
`).find("tr").html());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
(Try running the snippet!)
0
Ollin Boer Bohan 11 जुलाई 2018, 01:29
मैंने इसका उपयोग करने का प्रयास किया है: var tableStr = $("<table/>", { html: data }).find("#result-table").html(); console.log(tableStr); लेकिन कोई सफलता नहीं। मेरा एचटीएमएल इस तरह दिखता है: <table id='result-table'><tr><td>text</td><td>moretext</td></tr></table>
 – 
Curtis Upshall
11 जुलाई 2018, 01:58

पार्स टूटी हुई तालिका स्ट्रिंग के लिए चयनकर्ता '>' इस तरह उपयोग करें:

var part_table_str='<tr><td>Table cell</td><td>Another cell</td></tr>';
var cell_counter=0; //only for demonstration
$(part_table_str).find('>').each(function(){
	  console.log('cell '+cell_counter+' => '+$(this).html());
	  cell_counter++;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
0
mscdeveloper 11 जुलाई 2018, 02:10