ใช้. text () เพื่อดึงข้อมูลเฉพาะข้อความที่ไม่ซ้อนในแท็กย่อย


386

หากฉันมี html เช่นนี้:

<li id="listItem">
    This is some text
    <span id="firstSpan">First span text</span>
    <span id="secondSpan">Second span text</span>
</li>

ฉันพยายามใช้.text()เพื่อดึงข้อมูลสตริง "นี่คือข้อความบางส่วน" แต่ถ้าฉันจะบอกว่า$('#list-item').text()ฉันจะได้รับ

มีวิธีรับ (และอาจลบผ่านสิ่งที่ชอบ.text("")) เพียงแค่ข้อความว่างภายในแท็กไม่ใช่ข้อความภายในแท็กลูก?

ฉันไม่ได้เขียน HTML ดังนั้นนี่คือสิ่งที่ฉันต้องทำงานด้วย ฉันรู้ว่ามันจะง่ายเพียงแค่ตัดข้อความในแท็กเมื่อเขียน html แต่อีกครั้ง html นั้นถูกเขียนไว้ล่วงหน้า


เพราะฉันยังมีชื่อเสียงไม่พอที่จะแสดงความคิดเห็นและฉันไม่ต้องการให้ความรู้หายไป (หวังว่ามันจะช่วยคนอื่น) การรวมกันของคำตอบของmacio.Jun , RegExp และiStrangerเพื่อแทนที่ textNode ด้วย HTML ใน Javascript? อนุญาตให้ฉันค้นหาโหนดแบบข้อความอย่างเดียวเพื่อหาสตริงและแทนที่สิ่งที่เกิดขึ้นทั้งหมดด้วยลิงก์
JDQ

คำตอบ:


509

ฉันชอบการใช้งานซ้ำนี้ตามclone()วิธีการที่พบที่นี่เพื่อรับข้อความภายในองค์ประกอบหลัก

รหัสที่ให้ไว้สำหรับการอ้างอิงง่าย:

$("#foo")
    .clone()    //clone the element
    .children() //select all the children
    .remove()   //remove all the children
    .end()  //again go back to selected element
    .text();

5
ด้วยวิธีนี้คุณจะได้รับข้อความโดยไม่มีลูก แต่คุณไม่สามารถแทนที่ข้อความได้
BenRoe

1
ฉันไม่ได้รับ 1 สิ่ง: ถ้า. end () กลับไปที่องค์ประกอบที่เลือกกว่า text () ควรคัดลอกข้อความต้นฉบับพร้อมองค์ประกอบลูก แต่ในทางปฏิบัติฉันเห็นข้อความจากโคลนที่ถูกจัดการของเรากำลังถูกคัดลอก ดังนั้น end () กลับไปที่โคลน ()?

68
นี่เป็นวิธีที่ไม่มีประสิทธิภาพในการทำเช่นนี้
billyonecan

5
@billyonecan คุณช่วยแนะนำวิธีที่มีประสิทธิภาพมากขึ้นได้ไหม? สิ่งนี้น่าดึงดูดเพราะมันเป็น "สะอาด" และ "สั้น" คุณแนะนำอะไร?
derekmx271

1
@ derekmx271 ได้ดูคำตอบของ Stuart
billyonecan

364

คำตอบง่ายๆ:

$("#listItem").contents().filter(function(){ 
  return this.nodeType == 3; 
})[0].nodeValue = "The text you want to replace with" 

38
ฉันไม่เข้าใจว่าทำไมคำตอบที่มีประสิทธิภาพ (ที่ไม่สร้างโครงสร้างข้อมูลภายนอก) ไม่ได้รับการโหวตมากเท่ากับคำตอบที่ดูน่ากลัวน้อยกว่า +5 ถ้าทำได้
Steven Lu

16
คำตอบที่ง่ายและมีประสิทธิภาพ
Paul Carroll

9
นี่ไม่เพียง แต่มีประสิทธิภาพมากขึ้น แต่ยังถูกต้อง! วิธีนี้เหมาะสำหรับสถานการณ์เมื่อข้อความกระจัดกระจายระหว่างองค์ประกอบเด็ก +5
Kyryll Tenin Baum

15
การจะมีความชัดเจนมากขึ้นถ้าคุณใช้ IE8 + คุณสามารถใช้แทนthis.nodeType == Node.TEXT_NODE this.nodeType == 3ง่ายต่อการอ่านและทำความเข้าใจ IMO
NorTicUs

8
สิ่งนี้จะแตกถ้าคุณใช้กับบางสิ่งที่ไม่มีข้อความ หากคุณกำลังใช้สิ่งนี้เป็นฟังก์ชั่นและมีสถานการณ์สมมติที่คุณอาจจะหรือไม่มีข้อความเพียงแค่.contents().filter(...)โทรไปยังตัวแปรท้องถิ่นและตรวจสอบความยาวของมันเช่น var text = $(this).contents().filter(...); if (text.length) { return text[0].nodeValue; } return "";
Carl Bussema

157

ดูเหมือนว่าเป็นกรณีของ jQuery ที่มากเกินไปสำหรับฉัน ต่อไปนี้จะคว้าข้อความโดยไม่สนใจโหนดอื่น ๆ :

document.getElementById("listItem").childNodes[0];

คุณจะต้องตัดแต่ง แต่มันทำให้คุณได้สิ่งที่คุณต้องการในบรรทัดเดียวที่ง่าย

แก้ไข

ดังกล่าวข้างต้นจะได้รับโหนดข้อความ ในการรับข้อความจริงให้ใช้สิ่งนี้:

document.getElementById("listItem").childNodes[0].nodeValue;

31
คำตอบที่ดีที่สุดคุณไม่ควรจะต้องใช้ปลั๊กอินสำหรับการโทรนี้หรือเครือข่าย 10 jQuery $('.foo')[0].childNodes[0].nodeValue.trim()
ฝน

5
จะเป็นอย่างไรถ้าเนื้อหาข้อความถูกแบ่งออกเป็นหลายโหนด (เช่นลำดับของ crlf, text, crlf) มี (rael-life) ใดบ้างที่รับประกันได้ว่าโดมที่สร้างโดย ua จะใช้โครงสร้างที่ง่ายที่สุด?
collapsar

5
คำตอบที่ดีที่สุดโดยสิ้นเชิง ... ทำไมบางคนใช้มากกว่า jQuery?
ncubica

11
ใช้ได้เฉพาะกับข้อความ <div id = "listItem"> ที่คุณต้องการ <span> อื่น ๆ </span> </div> จะไม่ทำงานกับข้อความ <div id = "listItem"> <span> อื่น </span> ที่คุณต้องการ </div>
Spencer

1
documentบางครั้งคุณไม่ได้ cheerioมาที่นี่โดยใช้
แฟลช

67

ง่ายและเร็วกว่า:

$("#listItem").contents().get(0).nodeValue

เบราว์เซอร์นี้ใช้ร่วมกันได้หรือไม่?
Rajat Gupta

แน่นอนมันดึงหนึ่งในองค์ประกอบตรงตามวัตถุ jQuery กำหนดโดยดัชนี: Jquery เอกสารรับการตอบสนอง ()
WakeupMorning

1
@Nate ในกรณีที่คุณต้องการใช้บนแท็ก <br/> คุณสามารถใช้คำตอบของmacio มิถุนายนได้
WakeupMorning

นี่ควรเป็นคำตอบที่ยอมรับได้
แดนนี่

2
ทำไมget(0)แทนที่จะเป็นแค่[0]?
Clonkex

28

คล้ายกับคำตอบที่ยอมรับ แต่ไม่มีการโคลน:

$("#foo").contents().not($("#foo").children()).text();

และนี่คือปลั๊กอิน jQuery สำหรับจุดประสงค์นี้:

$.fn.immediateText = function() {
    return this.contents().not(this.children()).text();
};

นี่คือวิธีการใช้ปลั๊กอินนี้:

$("#foo").immediateText(); // get the text without children

t.children () คืออะไร?
FrEaKmAn

นี่เป็นคำตอบที่ซ้ำกันของ pbjk ที่เขียนใน Jan'15 ... ถึงกระนั้น - มันดูดี
Oskar Holmkratz

1
ไม่ได้จริงๆ @Oskar .contents()เป็นส่วนหนึ่งที่สำคัญที่นี่แล้ว!
DUzun

วิธีแก้ปัญหาไม่ถูกต้องถ้าโหนดของคุณไม่ใช้รหัส
AndroidDev

3
@AndroidDev คุณสามารถแทนที่ตัวเลือกด้วยสิ่งที่เหมาะกับคุณเสมอ นี่เป็นเพียงเพื่อแสดงให้เห็นถึงเทคนิค! ฉันยังเพิ่มเวอร์ชันปลั๊กอินเพื่อแสดงว่าทำงานได้แม้ไม่มี ID
DUzun

8

ไม่ใช่รหัส:

var text  =  $('#listItem').clone().children().remove().end().text();

เพิ่งกลายเป็น jQuery เพื่อประโยชน์ของ jQuery? เมื่อการดำเนินการอย่างง่ายเกี่ยวข้องกับคำสั่งที่ถูกผูกมัด & การประมวลผลที่ไม่จำเป็นจำนวนมากอาจถึงเวลาที่จะเขียนส่วนขยาย jQuery:

(function ($) {
    function elementText(el, separator) {
        var textContents = [];
        for(var chld = el.firstChild; chld; chld = chld.nextSibling) {
            if (chld.nodeType == 3) { 
                textContents.push(chld.nodeValue);
            }
        }
        return textContents.join(separator);
    }
    $.fn.textNotChild = function(elementSeparator, nodeSeparator) {
    if (arguments.length<2){nodeSeparator="";}
    if (arguments.length<1){elementSeparator="";}
        return $.map(this, function(el){
            return elementText(el,nodeSeparator);
        }).join(elementSeparator);
    }
} (jQuery));

โทร:

var text = $('#listItem').textNotChild();

ข้อโต้แย้งในกรณีที่พบสถานการณ์ที่แตกต่างเช่น

<li>some text<a>more text</a>again more</li>
<li>second text<a>more text</a>again more</li>

var text = $("li").textNotChild(".....","<break>");

ข้อความจะมีค่า:

some text<break>again more.....second text<break>again more

1
ดี วิธีการเกี่ยวกับการทำเช่นนี้ขอดึงสำหรับ jQuery รุ่นต่อไปหรือไม่
Jared Tomaszewski


6

มันจะต้องเป็นสิ่งที่ปรับให้เหมาะกับความต้องการซึ่งขึ้นอยู่กับโครงสร้างที่คุณนำเสนอด้วย สำหรับตัวอย่างที่คุณให้มาการทำงานนี้:

$(document).ready(function(){
     var $tmp = $('#listItem').children().remove();
     $('#listItem').text('').append($tmp);
});

ตัวอย่าง: http://jquery.nodnod.net/cases/2385/run

แต่มันค่อนข้างขึ้นอยู่กับมาร์กอัปที่คล้ายกับสิ่งที่คุณโพสต์


2
ผู้อ่านในอนาคตระวัง: รหัสในคำตอบนี้จะฆ่าเด็ก ๆ ในองค์ประกอบที่แท้จริง หนึ่งควรใช้cloneวิธีการที่นี่หากไม่ได้ผลที่ตั้งใจ
Mahn

@ คำตอบของ DotNetWala ด้านล่างและควรใช้แทนคำตอบนี้ หรืออย่างน้อยให้ใช้วิธีการแทน.detach() .remove()
Don McCurdy


4
jQuery.fn.ownText = function () {
    return $(this).contents().filter(function () {
        return this.nodeType === Node.TEXT_NODE;
    }).text();
};

1
ขอบคุณสำหรับข้อมูลโค้ดนี้ซึ่งอาจให้ความช่วยเหลือได้ทันที คำอธิบายที่เหมาะสมจะช่วยเพิ่มมูลค่าทางการศึกษาอย่างมากโดยแสดงให้เห็นว่าทำไมนี่จึงเป็นทางออกที่ดีสำหรับปัญหาและจะทำให้มีประโยชน์มากขึ้นสำหรับผู้อ่านในอนาคตที่มีคำถามคล้ายกัน แต่ไม่เหมือนกัน โปรดแก้ไขคำตอบของคุณเพื่อเพิ่มคำอธิบายและระบุข้อ จำกัด และสมมติฐานที่ใช้
Toby Speight

3

นี่เป็นคำถามเก่า แต่คำตอบยอดนิยมไม่มีประสิทธิภาพมาก นี่คือทางออกที่ดีกว่า:

$.fn.myText = function() {
    var str = '';

    this.contents().each(function() {
        if (this.nodeType == 3) {
            str += this.textContent || this.innerText || '';
        }
    });

    return str;
};

และทำสิ่งนี้:

$("#foo").myText();

3

ฉันคิดว่านี่จะเป็นโซลูชันที่ดีเช่นกัน - ถ้าคุณต้องการรับเนื้อหาของโหนดข้อความทั้งหมดที่เป็นลูกโดยตรงขององค์ประกอบที่เลือก

$(selector).contents().filter(function(){ return this.nodeType == 3; }).text();

หมายเหตุ: เอกสาร jQuery ใช้รหัสที่คล้ายกันเพื่ออธิบายฟังก์ชั่นเนื้อหา: https://api.jquery.com/contents/

ป.ล. ยังมีวิธีที่น่าเกลียดเล็กน้อยในการทำเช่นนี้ แต่สิ่งนี้แสดงให้เห็นในเชิงลึกเกี่ยวกับการทำงานของสิ่งต่าง ๆ และอนุญาตให้ใช้ตัวคั่นแบบกำหนดเองระหว่างโหนดข้อความ (บางทีคุณอาจต้องการให้ตัวแบ่งบรรทัดมี)

$(selector).contents().filter(function(){ return this.nodeType == 3; }).map(function() { return this.nodeValue; }).toArray().join("");

1

ฉันเสนอให้ใช้createTreeWalkerเพื่อค้นหาองค์ประกอบข้อความทั้งหมดที่ไม่ได้แนบกับองค์ประกอบ html (ฟังก์ชั่นนี้สามารถใช้เพื่อขยาย jQuery):

function textNodesOnlyUnder(el) {
  var resultSet = [];
  var n = null;
  var treeWalker  = document.createTreeWalker(el, NodeFilter.SHOW_TEXT, function (node) {
    if (node.parentNode.id == el.id && node.textContent.trim().length != 0) {
      return NodeFilter.FILTER_ACCEPT;
    }
    return NodeFilter.FILTER_SKIP;
  }, false);
  while (n = treeWalker.nextNode()) {
    resultSet.push(n);
  }
  return resultSet;
}



window.onload = function() {
  var ele = document.getElementById('listItem');
  var textNodesOnly = textNodesOnlyUnder(ele);
  var resultingText = textNodesOnly.map(function(val, index, arr) {
    return 'Text element N. ' + index + ' --> ' + val.textContent.trim();
  }).join('\n');
  document.getElementById('txtArea').value = resultingText;
}
<li id="listItem">
    This is some text
    <span id="firstSpan">First span text</span>
    <span id="secondSpan">Second span text</span>
</li>
<textarea id="txtArea" style="width: 400px;height: 200px;"></textarea>


1

หากตำแหน่งindexของโหนดข้อความได้รับการแก้ไขในหมู่พี่น้องของมันคุณสามารถใช้

$('parentselector').contents().eq(index).text()

1

ไม่แน่ใจว่ามีความยืดหยุ่นหรือจำนวนกรณีที่คุณต้องการให้ครอบคลุม แต่สำหรับตัวอย่างของคุณหากข้อความมาก่อนแท็ก HTML แรก - ทำไมไม่แยก HTML ด้านในออกจากแท็กแรก

$('#listItem').html().split('<span')[0]; 

และถ้าคุณต้องการมันอาจจะกว้างขึ้น

$('#listItem').html().split('<')[0]; 

และถ้าคุณต้องการข้อความระหว่างสองเครื่องหมายเช่นหลังจากสิ่งหนึ่ง แต่ก่อนอื่นคุณสามารถทำสิ่งที่ต้องการ (ยังไม่ทดลอง) และใช้ถ้าคำสั่งเพื่อให้มีความยืดหยุ่นเพียงพอที่จะมีเครื่องหมายเริ่มต้นหรือจุดสิ้นสุดหรือทั้งสองอย่าง :

var startMarker = '';// put any starting marker here
var endMarker = '<';// put the end marker here
var myText = String( $('#listItem').html() );
// if the start marker is found, take the string after it
myText = myText.split(startMarker)[1];        
// if the end marker is found, take the string before it
myText = myText.split(endMarker)[0];
console.log(myText); // output text between the first occurrence of the markers, assuming both markers exist.  If they don't this will throw an error, so some if statements to check params is probably in order...

ฉันมักจะทำฟังก์ชั่นยูทิลิตี้สำหรับสิ่งที่มีประโยชน์เช่นนี้ทำให้ปราศจากข้อผิดพลาดจากนั้นพึ่งพาพวกเขาบ่อยครั้งหนึ่งที่เป็นของแข็งแทนที่จะเขียนใหม่ของการจัดการสตริงประเภทนี้และเสี่ยงต่อการอ้างอิงเป็นโมฆะเป็นต้นด้วยวิธีนี้ ในโครงการจำนวนมากและไม่ต้องเสียเวลาในการดีบักอีกครั้งเพราะเหตุใดการอ้างอิงสตริงจึงมีข้อผิดพลาดอ้างอิงที่ไม่ได้กำหนด อาจไม่ได้เป็นรหัส 1 บรรทัดที่สั้นที่สุด แต่หลังจากคุณมีฟังก์ชั่นยูทิลิตี้มันเป็นหนึ่งบรรทัดจากนั้น หมายเหตุรหัสส่วนใหญ่เป็นเพียงการจัดการพารามิเตอร์ที่อยู่ที่นั่นหรือไม่เพื่อหลีกเลี่ยงข้อผิดพลาด :)

ตัวอย่างเช่น:

/**
* Get the text between two string markers.
**/
function textBetween(__string,__startMark,__endMark){
    var hasText = typeof __string !== 'undefined' && __string.length > 0;
    if(!hasText) return __string;
    var myText = String( __string );
    var hasStartMarker = typeof __startMark !== 'undefined' && __startMark.length > 0 && __string.indexOf(__startMark)>=0;
    var hasEndMarker =  typeof __endMark !== 'undefined' && __endMark.length > 0 && __string.indexOf(__endMark) > 0;
    if( hasStartMarker )  myText = myText.split(__startMark)[1];
    if( hasEndMarker )    myText = myText.split(__endMark)[0];
    return myText;
}

// now with 1 line from now on, and no jquery needed really, but to use your example:
var textWithNoHTML = textBetween( $('#listItem').html(), '', '<'); // should return text before first child HTML tag if the text is on page (use document ready etc)

ถ้าคุณต้องการที่จะเปลี่ยนข้อความเพียงใช้$('#listItem').html( newHTML ); โดยที่ newHTML เป็นตัวแปรที่มีข้อความที่แยกออกมาแล้ว
OG Sean


0

ฉันมากับโซลูชันเฉพาะที่ควรมีประสิทธิภาพมากกว่าการโคลนและการดัดแปลงโคลน โซลูชันนี้ใช้ได้กับการจองสองรายการต่อไปนี้เท่านั้น แต่ควรมีประสิทธิภาพมากกว่าโซลูชันที่ยอมรับในปัจจุบัน:

  1. คุณได้รับข้อความเท่านั้น
  2. ข้อความที่คุณต้องการแยกคือก่อนองค์ประกอบย่อย

ด้วยที่กล่าวว่านี่คือรหัส:

// 'element' is a jQuery element
function getText(element) {
  var text = element.text();
  var childLength = element.children().text().length;
  return text.slice(0, text.length - childLength);
}

0

เช่นเดียวกับคำถามที่ผมพยายามที่จะสกัดจากข้อความในการสั่งซื้อที่จะทำบางเปลี่ยนตัว regex ของข้อความ แต่ได้รับปัญหาที่องค์ประกอบภายในของฉัน (เช่น: <i>, <div>,<span>ฯลฯ ) ได้รับการออกยัง

รหัสต่อไปนี้ดูเหมือนว่าจะทำงานได้ดีและแก้ไขปัญหาทั้งหมดของฉัน

มันใช้บางคำตอบให้ที่นี่ nodeType === 3แต่โดยเฉพาะอย่างยิ่งจะใช้แทนข้อความเมื่อองค์ประกอบคือ

$(el).contents().each(function() { 
  console.log(" > Content: %s [%s]", this, (this.nodeType === 3));

  if (this.nodeType === 3) {
    var text = this.textContent;
    console.log(" > Old   : '%s'", text);

    regex = new RegExp("\\[\\[" + rule + "\\.val\\]\\]", "g");
    text = text.replace(regex, value);

    regex = new RegExp("\\[\\[" + rule + "\\.act\\]\\]", "g");
    text = text.replace(regex, actual);

    console.log(" > New   : '%s'", text);
    this.textContent = text;
  }
});

สิ่งที่ด้านบนทำคือวนซ้ำผ่านองค์ประกอบทั้งหมดของที่กำหนดel(ซึ่งได้รับเพียงด้วย$("div.my-class[name='some-name']");สำหรับองค์ประกอบภายในแต่ละองค์ประกอบโดยทั่วไปจะละเว้นพวกเขาสำหรับแต่ละส่วนของข้อความ (ตามที่กำหนดโดยif (this.nodeType === 3) ) มันจะใช้การทดแทน regex เฉพาะกับองค์ประกอบเหล่านั้น .

this.textContent = textส่วนเพียงแทนที่ข้อความทดแทนซึ่งในกรณีของฉันฉันกำลังมองหาราชสกุลเหมือน[[min.val]], [[max.val]]ฯลฯ

ข้อความที่ตัดตอนมาสั้น ๆ นี้จะช่วยให้ทุกคนพยายามทำสิ่งที่คำถามกำลังถาม ... และอีกมาก


-1

เพียงแค่ใส่มันลงในและ<p>หรือ<font>คว้า $ ('# listItem font'). text ()

สิ่งแรกที่อยู่ในใจ

<li id="listItem">
    <font>This is some text</font>
    <span id="firstSpan">First span text</span>
    <span id="secondSpan">Second span text</span>
</li>

6
ฉันไม่สามารถควบคุมการวางข้อความอิสระลงในแท็กได้เพราะฉันไม่ได้สร้างรหัสที่ฉันใช้งานได้ ถ้าฉันคว้าข้อความนั้นได้ฉันสามารถลบออกแล้วแทนที่ด้วยแท็กรอบ ๆ หรือทำอะไรก็ได้ที่ฉันต้องการ แต่อีกครั้ง html จะถูกเขียนไว้ล่วงหน้าแล้ว
MegaMatt

อาโอเค. แล้วฉันคิดว่าคุณจะต้องกรองผลลัพธ์: ขออภัย
Dorjan


-2

ใช้เงื่อนไขเพิ่มเติมเพื่อตรวจสอบว่า innerHTML และ innerText เหมือนกัน ในกรณีเหล่านั้นเท่านั้นให้แทนที่ข้อความ

$(function() {
$('body *').each(function () {
    console.log($(this).html());
    console.log($(this).text());
    if($(this).text() === "Search" && $(this).html()===$(this).text())  {
        $(this).html("Find");
    }
})
})

http://jsfiddle.net/7RSGh/


-2

หากต้องการตัดผลลัพธ์ให้ใช้ DotNetWala ในลักษณะดังนี้:

$("#foo")
    .clone()    //clone the element
    .children() //select all the children
    .remove()   //remove all the children
    .end()  //again go back to selected element
    .text()
    .trim();

ฉันพบว่าการใช้เวอร์ชันที่สั้นกว่าdocument.getElementById("listItem").childNodes[0]นั้นจะไม่ทำงานกับการตัดของ jQuery ()


3
นั่นเป็นเพราะdocument.getElementById("listItem").childNodes[0]จาวาสคริปต์ธรรมดาคุณต้องห่อมันในฟังก์ชั่น jQuery$(document.getElementById("listItem").childNodes[0]).trim()
Red Taz

ตกลงว่าเหมาะสม ฮ่าฮ่า ขอบคุณ!
Marion Go

1
นี่คือเกือบจะเหมือนกับ DotNetWala ของคำตอบ ทั้งหมดที่คุณทำถูกเพิ่ม.trim()เข้าไปในตอนท้าย คำตอบนี้จำเป็นหรือไม่?
คนงานทุกคนเป็นสิ่งจำเป็น

-3

ฉันไม่ใช่ผู้เชี่ยวชาญ jquery แต่เกี่ยวกับ

$('#listItem').children().first().text()

1
หากคุณสังเกตผู้เชี่ยวชาญ jquery แล้วทำไมไม่กลายเป็นผู้เชี่ยวชาญมากขึ้นโดยอ่านคำตอบอื่น ๆ ก่อน? ... หนึ่งในนั้นเกิดขึ้นเหมือนกับที่คุณเขียน ความคิดที่ดี.
Oskar Holmkratz

-4

นี่ยังไม่ทดลอง แต่ฉันคิดว่าคุณอาจลองแบบนี้ได้:

 $('#listItem').not('span').text();

http://api.jquery.com/not/


3
$('#listItem').text()เพราะมันเป็นเช่นเดียวกับ #listItemไม่ใช่การ<span>เพิ่มดังนั้นnot('span')อย่าทำอะไรเลย
โทมัส Higginbotham
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.