2010-03-03 6 views
1

HI를 찾을JQuery와, 문자열,

사람이 나를 도울 수 :

이 내 HTML 인 것은 :

내가 jQuery를 함께 문자열을 얻으려면
<div class="Breadcrumb"> 
     <a href="#">Home</a>&nbsp;&gt;&nbsp; 
     <a href="#">Projects</a>&nbsp;&gt;&nbsp; 
     Projects Text 
    </div> 

앵커에없는 것 태그는이 예에서 "프로젝트 텍스트"

이 같은

이론적으로 뭔가

입니다 jQuery를이 :

var name = $("Breadcrumb (not <a>) ").text(); 

하지만이 하나의 "&nbsp;&gt;&nbsp;"

감사가 필요하지 않습니다!

답변

1

테스트되지 않은,하지만 작동합니다 :

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

alert(text[text.length-1]); 
+0

nodeType == 2 또는 4 일 수 있습니다. 앵커의 수는 다릅니다 – AlexC

+1

@Alexander 코드를 사용해보십시오. nodeType은 요소 유형을 나타냅니다. 3은 ELEMENT_NODE가 아닌 TEXT_NODE (경고 (Node.TEXT_NODE); 시도)를 나타냅니다.그런 다음 배열의 마지막 요소 (텍스트의 마지막 블록)를 가져옵니다. 일부 마크 업을 제거해야 할 수도 있지만 이는 나에게 좋은 해결책처럼 보입니다. –

0

이 당신에게 "A"태그의 텍스트를 제공해야합니다. 자바 스크립트에서 문자열 분석을 수행하여 nbsp 비트를 잘라내야합니다. 나는 정규식을 제안한다.

var foo = $(".Breadcrumb a").text(); 
+0

그건 그가 원하는 것이 아니에요. 그는 'Projects Text'를 원한다. – poke

0

나는, ... 다음에 HTML을 변경

다음 jQuery로 방금 다음을 수행 할 수
<div class="BreadCrumb"> 
    <a href="#">Home</a>&nbsp;&gt;&nbsp; 
    <a href="#">Projects</a>&nbsp;&gt;&nbsp; 
    <span class="your_class_name">Projects Text</span> 
</div> 

... 불가능

var name = $(".BreadCrumb .your_class_name").text(); 
+0

앵커 태그에서 HREF 대신 HTML 형식으로 실수로 입력됩니다. 이 문제가 해결되었습니다. – MillsJROSS

1

을 건의 할 것 &nbsp;&gt;&nbsp; Projects Text은 실제로 DOM 트리 내의 하나의 노드입니다. 따라서 필터링없이 Projects Text을 단독으로 가져올 수 없습니다. 아시다시피, 텍스트 앞에 &nbsp;&gt;&nbsp;이 오면 간단하게 그 부분을 나눌 수 있습니다.

MillsJROSS가 제안했듯이 다른 태그 안에 코드를 넣어야합니다.

+0

하지만이   >  으로 할 수 있습니까? – AlexC

+0

예를 들면 다음과 같습니다 :'$ ('.Breadcrumb a : last') [0] .nextSibling.nodeValue' - jQuery와 함께 더 좋은 방법이 있는지 모르겠지만 그다지 사용하지는 않습니다. – poke

0

@poke가 정확합니다.

var name = $(".Breadcrumb span").text(); 

편집 : 당신이 또는 HTML을 변경하지 않을 수 없습니다 당신의 이동 경로가 일치하는 경우

, 당신이 사용할 수있는

<div class="Breadcrumb"> 
    <a href="#">Home</a>&nbsp;&gt;&nbsp; 
    <a href="#">Projects</a>&nbsp;&gt;&nbsp; 
    <span>Projects Text</span> 
</div> 

자바 스크립트 : 귀하의 HTML을 변경 공백 문자와 공백을 제거하기위한 정규식은 > :

var name = $(".Breadcrumb").text().replace(/(^\s+|\s+$|(.*)>\s*)/g,""); 

여전히 HTML 생성을 제어 할 수 있다면 여분의 span 태그를 추가하는 것이 CSS를 사용하여 현재 페이지의 스타일을 쉽게 지정할 수있는 추가 보너스로 더 깨끗하다고 ​​생각합니다.