2015-11-18 5 views
1

Я хочу, чтобы получить все строки, которые содержат определенное слово в нем, , например:Печать каждой строки, если она содержит определенный символ в jQuery?

<div> 
    <div> 
     <span> 
      <h3>In Paris (Mark Bartels) worked for about 50 years.</h3> 
     </span> 
    </div> 

    <div> 
     <span> 
      <h3>In America (Henry Bartels) worked for about 50 years.</h3> 
     </span> 
    </div> 

    <div> 
     <span> 
      <h3>In Europe (Mark Bartels) worked for about 50 years.</h3> 
     </span> 
    </div> 
</div> 

В строке выше я должен проверить «Марку», теперь я хочу, чтобы показать все строки, которые содержат слово «Марк».

Я пробовал что-то следующим образом, но это мне не помогает.

var elem = $('body').find(':contains(Mark)').not('script, style, link'); 
var a = elem.parent(); 
var tag = a; 
console.log(tag); 
$("#sentence").append(elem.text()); 
$("#sentence").append('<br />'); 
+1

попробовать это http://jsfiddle.net/nt6oktkz/ – guradio

+3

, что делает PHP это связано с этим? –

+0

Это будет ваш ответ. '$ (": not (: contains ('Mark')) "). hide();' – ketan

ответ

6

Истерируйте все элементы, содержащие строку, и добавьте внутренний текст.

  1. :not(:has(*)): Выбирает все элементы, которые не имеют дочерний элемента (за исключением текстовых узлов) Reference
  2. :contains(Mark)'): Выбирает все элементы, которые содержат текст Mark
  3. :not(script): Чтобы исключить <script> элементы

// Get all the h3 elements which contains `Mark` in the innerText 
 
// Iterate over them 
 
$('body').find(':not(:has(*)):contains(Mark):not(script)').each(function() { 
 
    // Append to the element 
 
    console.log($(this)[0]); 
 
    $('#sentence').append($(this).text() + '<br />'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <div> 
 
    <span> 
 
     <h3>In Paris (Mark Bartels) worked for about 50 years.</h3> 
 
    </span> 
 
    </div> 
 
    <div> 
 
    <span> 
 
     <h3>In America (Henry Bartels) worked for about 50 years.</h3> 
 
    </span> 
 
    </div> 
 
    <div> 
 
    <span> 
 
     <h3>In Europe (Mark Bartels) worked for about 50 years.</h3> 
 
    </span> 
 
    </div> 
 
</div> 
 

 
<div id="sentence"></div>

+0

привет, да, это работает, но я не хочу ограничивать его только для h3, так как html-тег может быть другим, есть ли способ переустановить его всеми тегами html? –

+0

попробуйте использовать '*' вместо 'h3', как' $ ('# container'). Find ('*: contains (Mark)') ' –

+0

Я пробовал, но он печатает весь текст вместо нужного –

0

Давайте предположим, что h3 имеют общий класс text, то мы можем использовать indexof легко выяснить места, где происходит Mark

$('.text').each(function() { 
    if ($(this).text().indexOf('Mark') >= 0) { 
     $("#sentence").append($(this).text() + '<br />'); 
    } 
}); 
+0

Чувак Я просто попытался сосредоточиться на использовании 'indexOf'. Я знаю, что все ваши баллы действительны. –

Смежные вопросы