얼마나 유연하고 많은 사례를 다루어야하는지 잘 모르겠지만 예를 들어 텍스트가 항상 첫 번째 HTML 태그 앞에 오는 경우 – 첫 번째 태그에서 내부 HTML을 분할하여 이전 HTML을 가져와야하는 이유는 무엇입니까?
$('#listItem').html().split('<span')[0];
더 넓다면 필요할 수도 있습니다
$('#listItem').html().split('<')[0];
그리고 두 마커 사이에 텍스트가 필요한 경우, 한 가지 후에 다른 것보다 먼저, (unested) 같은 작업을 수행하고 if 문을 사용하여 시작 또는 끝 마커 또는 둘 다를 충분히 유연하게 만들 수 있습니다. :
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...
나는 일반적으로 이와 같은 유용한 것들을 위해 유틸리티 함수를 만들고, 오류를 없애고, 이러한 유형의 문자열 조작을 다시 작성하고 null 참조를 위험에 빠뜨리는 대신 항상 한 번 확실하게 의존합니다. 그렇게하면 함수를 재사용 할 수 있습니다 많은 프로젝트에서 문자열 참조에 정의되지 않은 참조 오류가있는 이유를 디버깅하는 데 다시 시간을 낭비하지 않아도됩니다. 가장 짧은 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)