2012-05-17 3 views
0

У меня есть страница, в которой я должен искать присутствие элемента в зависимости от первого входа в первой форме толькопроверка на наличие элемента в JQuery

<input type="text" /><!-- first input --> 
<button></button> 
<div> 
    <form><input value="3" /></form> <!-- first form --> 
    <form><input value="3" /></form> 
</div> 

и сценарий

$("button").click(function() 
{ 
    if($(this).next().children("form").first().has("input[value='" + $(this).prev().val() + "']")) 
     alert("Present"); 
    else 
     alert("Absent"); 
}); 

Но это не работает

+2

Итак, в чем проблема? – FishBasketGordo

+0

, если вы назначили некоторый идентификатор, было бы проще найти ссылки на элементы ... вы контролируете разметку? – fcalderan

+0

Я не могу это сделать :-( –

ответ

0

Проблема заключается в том, что .has() method не возвращает логическое значение, он возвращает объект JQuery, в частности, он «создает новый объект JQuery из подмножество согласованных элементов ". Вы должны проверить длину этого объекта, чтобы увидеть, если какие-либо элементы совпадений:

if($(this).next().children("form").first() 
      .has("input[value='"+$(this).prev().val()+"']").length != 0) 

Демо: http://jsfiddle.net/mmQHB/

+0

Thanksssssssssssssssssssssssssssssss –

+0

Обратите внимание: хотя использование метода '.has()' правильным образом заставляет вас пройти мимо вашей текущей проблемы , конкатенация введенного пользователем значения из поля непосредственно в ваш селектор jQuery не будет работать, если пользователь вводит кавычку. Также у меня есть подозрение, что вход '' [value = '...'] "' селектор может выбирать только значение оригинала значения атрибута, а не текущее значение ввода (по крайней мере, это то, что, казалось, происходит whe n Я попробовал это в Chrome). – nnnnnn

+0

Как бороться с кавычкой –

1

Вы можете проверить наличие элемента, проверив длину коллекции, которую возвращает запрос:

Например, если бы я был, чтобы проверить, если я имел форму:

var forms = $('form').length //0 if none, at least 1 if any 
+0

у меня есть еще один div, не указанный здесь, который также имеет некоторый динамический код –

+0

Я дал ошибку в firebug –

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