Обновленный ответ, чтобы попытаться обработать входные данные, которые не заключены в <span>
.
// Finds all checked input
var $targets = $('body').find('input:checked');
// Loop over each input
$($targets).each(function(){
// If the parent isn't a span, then false
var parent_span = ($(this).parent().is('span')) ? $(this).parent() : false;
// If parent span is not false, empty the closest p and append the span, otherwise remove spans from parent p
(parent_span !== false) ? $(this).closest('p').empty().append(parent_span) : $(this).closest('p').find('span').remove();
})
Это развалится, если вы добавите другой вход, который не обернут в <span>
, хотя в контейнер. Я знаю, что вы сказали, что таков HTML, но в идеале он будет согласованным.
Вот обновление jsfiddle .