JQuery, строка, найти - PullRequest
       3

JQuery, строка, найти

1 голос
/ 03 марта 2010

HI,

Может ли кто-нибудь помочь мне с этим:

Это мой HTML:

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

Я хочу получить с помощью jQuery строку, которой нет в теге привязки, в данном примере это «Projects Text»

Теоретически как то так

jQuery:

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

но мне этот не нужен "&nbsp;&gt;&nbsp;"

Спасибо!

Ответы [ 5 ]

1 голос
/ 03 марта 2010

Это невозможно, поскольку &nbsp;&gt;&nbsp; Projects Text на самом деле является одним узлом в дереве DOM. Таким образом, вы не можете получить Projects Text в одиночку, не отфильтровав его. Если вы знаете, что тексту предшествует &nbsp;&gt;&nbsp;, вы можете просто выделить его.

Или, как предложил MillsJROSS, вам нужно поместить код в другой тег.

1 голос
/ 03 марта 2010

Не проверено, но должно работать:

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

alert(text[text.length-1]);
0 голосов
/ 03 марта 2010

@ тыкает правильно.Измените HTML:

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

Javascript:

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

РЕДАКТИРОВАТЬ:

Если вы не можете или не хотите изменить HTMLи ваши хлебные крошки непротиворечивы, тогда вы можете использовать регулярные выражения, чтобы избавиться от пробелов и чего-либо прежде, включая >:

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

Я все еще думаю, что если у вас есть контроль над генерацией HTML,добавление дополнительного тега span является более понятным с дополнительным бонусом, позволяющим легко стилизовать текущую страницу с помощью css.

0 голосов
/ 03 марта 2010

Я бы предложил изменить HTML на следующий ...

<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>

Тогда с Jquery вы можете просто сделать следующее ...

var name = $(".BreadCrumb .your_class_name").text();
0 голосов
/ 03 марта 2010

Это должно дать вам текст тегов "A".Вам нужно будет выполнить синтаксический анализ строк в javascript, чтобы выхватить биты nbsp.Я предлагаю регулярное выражение.

var foo = $(".Breadcrumb a").text();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...