2016-10-20 2 views
-2

У меня есть элемент div и есть класс для него, я хочу создать несколько div с помощью этого класса, но я не хочу создавать вложенные div, я хочу создать div снаружи с помощью javascript, i б Append свойство, но его создать вложенную DIV ниже в HTML, как я обязательно должен помочьСоздание множественного div динамически с использованием javascript

//have this div 
<div data-bind="dynamicDiv" class="one"></div> 

//need to create multiple div 

    //Knockoutjs && javascript// 

ko.bindingHandlers.dynamicDiv = { 
    init: function (element, valueAccessor) { 
     var parentclassName = element.className;   
      lastId += 1; 

    ///it is creating nested div, want to create outside of parentclass not inside the parent class 
      $element.append(DivHtml(lastId,parentclassName));   
    }, 
    }; 

function DivHtml(lastId,parentclassName) { 
     Newdiv = document.createElement('div'); 
     Newdiv.id = "divId_"+lastId 
     document.querySelector("." + parentclassName).appendChild(Newdiv) 
    }  
+0

ответил уже: http://stackoverflow.com/questions/4793604/how-to-do-insert-after-in-javascript-without-using-a-library –

+1

Append ur 'div' в родительский тег. Не к тому, на который ссылается. Пожалуйста, поделитесь используемым кодом. Таким образом, v может видеть, на что упустил. – Searching

+0

@ поиск, обновленный мой код – Nikil

ответ

0

Исправления для текущего кода:

  • В DivHtml, третья линия должна быть return NewDiv
  • следует приложить к element.parentElement используя appendChild
  • Вы никогда не определить $element, это должно быть просто element или $(element)

Но даже если вы это исправить, я не понимаю, что вы пытаетесь достичь.

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

<div data-bind="attr: { id: 'divId_' + ++lastId }" class="one"></div> 

Если вам нужно скопировать имя класса динамически, я бы заботиться о том, что в модели представления, если я вам. Посмотрите на крепления template и foreach.

var className = "one"; 
 
var idPrefix = "divId_"; 
 
var nrOfElements = 5; 
 
var elements = []; 
 

 
for (var i = 0; i < nrOfElements; i += 1) { 
 
    elements.push({ 
 
    className: className, 
 
    id: idPrefix + i 
 
    }); 
 
}; 
 

 
ko.applyBindings({items: elements });
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 

 

 
<div data-bind="foreach: elements"> 
 
    <div data-bind="attr: { id: id, 'class': className }, text: id"></div> 
 
</div>

+0

@thanks для вашего времени, но мое условие, я не могу использовать его, мне нужно использовать insertAfter или InsertBefore, поэтому я хочу использовать jquery внутри него – Nikil

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