2014-09-16 5 views
2

У меня есть следующий код html.проверить, имеет ли список элемент с тем же идентификатором

<div class="list"> 
    <p id="item1">Item 1</p> 
    <p id="item2">Item 2</p> 
    <p id="item3">Item 3</p> 
    <p id="item4">Item 4</p> 
</div> 

<input name="item1" type="checkbox"/> 
<input name="item6" type="checkbox"/> 
<input name="item5" type="checkbox"/> 

И когда я нажимаю на флажок я хочу, чтобы добавить новый тег <p> к <div> с id как вход-х name.

$('input').click(function(){ 
    $('.list').append('<p id="' + $(this).attr("name") + '"</p>'); 
}); 

Но предметы с одинаковым идентификатором не должны повторяться! Как я могу это проверить? Я думаю, мне нужно Переберите мой список <p> что-то вроде этого

$('.list p').each(function(){ 
    if (..element with same id exists..) { 
     ....  
    } else { 
     ('.list').append('<p id="' + $(this).attr("id") + '"</p>');  
    } 
}); 
+0

, что должно произойти, если вы снимете элемент –

+0

не можете повторять идентификаторы, они уникальны по определению. – charlietfl

+0

ID - это то, что должно быть уникальным. Вы пытаетесь создать два элемента с одинаковым идентификатором. Это очень неправильно. – Prashant19sep

ответ

0

Вы можете использовать длину абзаца элементов в .list и и в переменной ид, в конце концов, чтобы сделать их уникальными:

$('input').click(function(){ 
    if($(this).is(':checked')){// on checked true 
    var p_length=$('.list p').length; //find length of p elements 
    if(p_length==0) 
    $('.list').append('<p id="' + $(this).attr("id") + '"</p>');  
    else 
    $('.list').append('<p id="' + $(this).attr("name")+"_"+p_length + '"</p>'); 
} 
}); 
+0

нет, мне нужно условие if. Мне не нужно менять идентификатор. – user3673623

+0

В некоторых случаях может не получиться! – unkn0wn

+0

добавит элемент, если пользователь также отключит флажок – charlietfl

0

Вы можете проверить длину пропеллер выбранных объектов, выбрав его по ID:

$("#YourId").length >0 //this means id already exist. 

здесь являются реф ссылки:

http://learn.jquery.com/using-jquery-core/faq/how-do-i-test-whether-an-element-‌​exists/

jquery how to find if div with specific id exists

+0

Вы также можете увидеть это [http://stackoverflow.com/questions/3373763/jquery-how-to-find-if-div-with-specific-id-exists](http://stackoverflow.com/questions/ 3373763/jquery-how-to-find-if-div-with-specific-id-exists) и [http://learn.jquery.com/using-jquery-core/faq/how-do-i-test- ли-an-element-exists /] (http://learn.jquery.com/using-jquery-core/faq/how-do-i-test-whether-an-element-exists/) –

+0

ok..yup , Ты прав. Я думал, пытаясь считать больше одного, который не работает http://jsfiddle.net/fp8trt0u/ Немного опередил себя – charlietfl

0

Попробуйте $(element).has('#id');

if($('.list').has('#foo')) 
{ 
    //dont append 
} 
else 
{ 
//append 
} 
0

Попробуйте это:

$('input').on('click', function(){ 
    inputId = $(this).attr('name'); 
    console.log($('.list').find('#' + inputId)); 
    if($('.list').find('#' + inputId).length === 0) 
    { 
     $('.list').append('<p id="' + inputId + '"></p>'); 
    } 
}); 

DEMO