2015-06-01 2 views
0

У меня есть ниже JQuery, где я создал динамический HTML структуру Как обернуть 2 динамических элемента html с помощью jquery?

var data = [{"name": "Afghanistan", "code": "A"},{"name": "AndorrA", "code": "A"},{"name": "Bouvet Island", "code": "B"},{"name": "Cook Islands", "code": "C"}]; 
 
$.each(data, function(key, val) { 
 
\t \t if (!$("#aZContent ul." + val.code).is("*")) { 
 
\t \t \t $("<ul />", { 
 
\t \t \t "class": val.code, 
 
\t \t \t "html": "<li>" + val.name + "</li>" 
 
\t \t \t }) 
 
\t \t \t .appendTo("#aZContent ol") 
 
\t \t \t .before('<b class=' + val.code + '>' + val.code + '</a></b>'); 
 
\t \t } else { 
 
\t \t \t $("b." + val.code).each(function() { 
 
\t \t \t if (this.textContent === val.code) { 
 
\t \t \t \t $(this).next("ul").append("<li>" + val.name + "</li>"); 
 
\t \t \t } 
 
\t \t \t }) 
 
\t \t } 
 
\t \t });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="aZContent"> 
 
\t <ol></ol> 
 
</div>

Как обернуть «Ъ» и элемент «уль» с «Ли»

<li> 
<b></b> 
<ul> 
    <li></li> 
</ul> 
</li> 
+0

Где aZContent? Возможно, было бы также полезно иметь значение «данных», чтобы мы могли воспроизвести то, что вы там делаете. Рабочая скрипка будет еще лучше –

+0

Пожалуйста, посмотрите, я добавил рабочий скрипт @Michel Walter –

+0

@ManasRanjanPradhan См. Сообщение. – guest271314

ответ

0

Try использования $.each(), .appendTo(), .append(); установка ol li, bclass в code свойство data

$(function() { 
 
    var data = [{ 
 
    "name": "Afghanistan", 
 
    "code": "A" 
 
    }, { 
 
    "name": "Bouvet Island", 
 
    "code": "B" 
 
    }, { 
 
    "name": "Cook Islands", 
 
    "code": "C" 
 
    }]; 
 

 
    $.each(data, function(key, val) { 
 
    if (!$("#aZContent ul." + val.code).is("*")) { 
 
     // append `<li>` to `ol` 
 
     $("<li />", { 
 
      // set `class` to `val.code` 
 
      "class": val.code, 
 
      // set `li` `html` to `b` , `ul` , `li` 
 
      "html": "<b class=" + val.code + ">" 
 
        + val.code + "</a></b>" 
 
        + "<ul><li>" 
 
        + val.name + "</li></ul>" 
 
     }) 
 
     .appendTo("#aZContent ol") 
 
    } else { 
 
     $("b." + val.code).each(function() { 
 
     if (this.textContent === val.code) { 
 
      // append `li` to `ul` 
 
      $(this).next("ul").append("<li>" + val.name + "</li>"); 
 
     } 
 
     }) 
 
    }; 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> 
 
</script> 
 
<div id="aZContent"> 
 
    <ol></ol> 
 
</div>

+0

, когда дело доходит до получения дополнительных данных его искаженный, как отдельный список, вместо того, чтобы подходить под буквой. Пожалуйста, посмотрите http://jsfiddle.net/mrpradhan/Las6cvq9/1/ –

+0

@ManasRanjanPradhan Да. 'data' на странице http://jsfiddle.net/mrpradhan/Las6cvq9/1/ не отображаются так же, как' data' в вопросе? – guest271314

+0

@ManasRanjanPradhan 'js' соответствуют требованиям _« Как обернуть элемент «b» и «ul» с помощью «li» _? – guest271314

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