2015-04-09 3 views
1

Мне нужен способ проверить, существует ли в документе динамически созданный скрытый элемент ввода перед его добавлением.Проверьте, существует ли элемент HTML до добавления

Я знаю, что есть похожие вопросы, но мои вопросы отличаются от них, потому что другие вопросы, похоже, предназначены для базового добавления элементов с помощью селекторов, например.

if ($('#button').length) 

проверяет, существует ли элемент с #button идентификатором уже существует.

Однако в моем коде, поскольку я динамически создаю элементы input, их атрибуты значения имени будут разными. Поэтому мне нужно, чтобы весь элемент существовал один за другим в цикле, прежде чем я его добавлю. Есть ли способ сделать это в jQuery?

$('input[type=radio]:checked').each(function(){ 

//Something like this 
if($('<input type="hidden" name="data[' + $(this).val() + ']" value="' + $(this).val() + '" />').length) 
{ 
$('#addCharacters').append('<input type="hidden" name="data[' + $(this).val() + ']" value="' + $(this).val() + '" />'); 
} 
}); 
+0

вы не можете использовать функцию обратного вызова на Append в себе? – vimes1984

ответ

1

С JQuery, вы можете использовать функцию .is() проверить, является ли элемент/последовательность элементов совпадают условия, которые вы укажете. Это особенно полезно, поэтому вам не нужно беспокоиться об экранировании строк. Например:

$('input:radio:checked').each(function(){ 
    var cur = $(this).val(); 
    if(!$('#addCharacters input:hidden') 
     .is(function(i,e){ return e.value==cur && e.name=='data['+cur+']'; })) 
    { 
     // Append new element 
    } 
}); 

Если у вас есть много радиоэлементов, чтобы проверить, вы, вероятно, хотите переместить анонимную функцию где-то еще, так что не создаются для каждого элемента радио, что вы проверку.

См экспансивного примера в мини-угадайку здесь: https://jsfiddle.net/bv6abj7L/2/

1

Вы должны использовать multiple и attribute equals селекторы:

if($('input[type="hidden"][name="data[' + $(this).val() + '"][value="' + $(this).val() + '"]').length) 
+0

Не позволю мне предложить редактирование, но есть дополнительный) в конце кода – JonSquared

+0

@JonSquared thanks - теперь он отредактирован – dave

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