Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как найти текст в нескольких div (https://javascript.ru/forum/events/43833-kak-najjti-tekst-v-neskolkikh-div.html)

housewm 23.12.2013 12:37

Как найти текст в нескольких div
 
есть div.

В этом диве n количество div'ов. В них содержится текст

<div class="main">
   <div class="child">текст1</div>
   <div class="child">текст2</div>
   <div class="child">текст3</div>
</div>


есть переменая а, ее значение = текст2

нужно в дивах c классом child найти div который содержит тот же текст что и переменная

не могу понять как это сделать, подскажите в каком направлении копать

ksa 23.12.2013 13:33

Цитата:

Сообщение от housewm
нужно в дивах c классом child найти div который содержит тот же текст что и переменная

http://jquery-docs.ru/selectors/containstext/#text

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
$(function (){
	var txt='текст2';
	alert($('.child:contains("'+txt+'")').text());
});
</script>
</head>
<body>
<div class="main">
	<div class="child">текст1</div>
	<div class="child">текст2</div>
	<div class="child">текст3</div>
</div>
</body>
</html>

housewm 23.12.2013 13:43

ага пробовал этот селектор видимо просто не разобрался как парвильно работает

а если мне нужно использовать условие могу ли я сделать так?
if ($('.child:contains("'+txt+'")').text()){
//действие
}

рони 23.12.2013 13:48

housewm,
а где условие то ? и вы неучитываите что элементов много может быть

ksa 23.12.2013 13:49

Цитата:

Сообщение от housewm (Сообщение 288549)
а если мне нужно использовать условие могу ли я сделать так?
if ($('.child:contains("'+txt+'")').text()){
//действие
}

Мочь-то можно... Только что тебе даст такое "условие"? :)
Ведь это аналогично вот этому

if ('строка'){
   alert(1);
};

рони 23.12.2013 13:56

:write:
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
    <style type="text/css">
    </style>
    <script type="text/javascript">
        $(function () {
            var txt = 'текст2';
            $(".child").each(function (indx, element) {
                if ($(element).is(':contains("' + txt + '")')) alert([indx, $(this).text()])
            });;
        });
    </script>
</head>

<body>
    <div class="main">
        <div class="child">текст1</div>
        <div class="child">текст2</div>
        <div class="child">текст3</div>
    </div>
</body>

</html>

housewm 23.12.2013 13:59

Цитата:

Сообщение от ksa (Сообщение 288556)
Мочь-то можно... Только что тебе даст такое "условие"? :)
Ведь это аналогично вот этому

if ('строка'){
   alert(1);
};

ну как оно мне даст что текст будет искать в определенных дивах

housewm 23.12.2013 14:02

Цитата:

Сообщение от рони (Сообщение 288564)
:write:
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
    <style type="text/css">
    </style>
    <script type="text/javascript">
        $(function () {
            var txt = 'текст2';
            $(".child").each(function (indx, element) {
                if ($(element).is(':contains("' + txt + '")')) alert([indx, $(this).text()])
            });;
        });
    </script>
</head>

<body>
    <div class="main">
        <div class="child">текст1</div>
        <div class="child">текст2</div>
        <div class="child">текст3</div>
    </div>
</body>

</html>

с each пробовал немного не подходит мне, тк я делаю условие

if(нашел совпадение){
//ничего не делаем
}
else{
//добавляем строчку
}


так вот если each использую то добавляется столько строчек сколько дивов не совпавших с условием

ksa 23.12.2013 14:07

Цитата:

Сообщение от housewm (Сообщение 288568)
я делаю условие
if(нашел совпадение){
//ничего не делаем
}
else{
//добавляем строчку
}

Так тогда и пиши например так

if($('.child:contains("'+txt+'")').length>0){
//ничего не делаем
}
else{
//добавляем строчку
}

housewm 23.12.2013 14:14

Цитата:

Сообщение от ksa (Сообщение 288569)
Так тогда и пиши например так

if($('.child:contains("'+txt+'")').length>0){
//ничего не делаем
}
else{
//добавляем строчку
}

а зачем .length ? мне ведь точное совпадение нужно

сделал вот так

if($('.child:contains("'+txt+'")').text())


работает


Часовой пояс GMT +3, время: 10:03.