在追加之前检查HTML元素是否存在

时间:2015-04-09 22:48:25

标签: javascript jquery html

我需要一种方法来检查在附加它之前文档中是否存在动态创建的隐藏输入元素。

我知道有类似的问题,但我的问题与它们不同,因为其他问题似乎是用于选择器的元素的基本附加,例如

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

检查具有#button id的元素是否已存在。

但是在我的代码中,由于我动态创建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() + '" />');
 }
});

2 个答案:

答案 0 :(得分:1)

您需要使用multipleattribute equals选择器:

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

答案 1 :(得分: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/