2015-06-29 5 views
0

Я работаю с библиотекой называется REDIPS, что позволяет создать эффект перетаскивания настраиваемый и простой ....Работы с перетаскиванием REDIPS

Я пытаюсь создать функцию, которая вызывает элемент что перемещается клонируют более чем один раз и расположен на левой стороне главного элемента ...

(function() { 
 
    var redipsInit, 
 
     getContent; 
 

 
    redipsInit = function() { 
 
    var num = 0, 
 
     rd = REDIPS.drag; 
 
    rd.init(); 
 
    rd.dropMode = 'single'; 
 
    rd.hover.colorTd = 'rgb(62, 255, 110)'; 
 
    rd.event.clicked = function() { 
 
     if (rd.obj.id == 'drag-1' || rd.obj.id == 'drag-4') { 
 
     for (var i = 0; i < 1; i++) { 
 
      var mydiv = rd.obj; 
 
      var div = document.createElement("div"); 
 
      insertAfter(div, mydiv); 
 
      div.className = rd.obj.className; 
 
      div.style.backgroundColor = rd.obj.style.backgroundColor; 
 
     } 
 
     } else if (rd.obj.id == 'drag-2' || rd.obj.id == 'drag-5' || rd.obj.id == 'drag-9') { 
 
     for (var i = 0; i < 3; i++) { 
 
      var mydiv = rd.obj; 
 
      var div = document.createElement("div"); 
 
      insertAfter(div, mydiv); 
 
      div.className = rd.obj.className; 
 
      div.style.backgroundColor = rd.obj.style.backgroundColor; 
 
     } 
 
     } 
 
    }; 
 
    } 
 
    getContent = function(id) { 
 
    var td = document.getElementById(id), 
 
     content = '', 
 
     cn, i; 
 
    for (i = 0; i < td.childNodes.length; i++) { 
 
     cn = td.childNodes[i]; 
 
     if (cn.nodeName === 'DIV' && cn.className.indexOf('drag') > -1) { 
 
     content += cn.id + '_'; 
 
     } 
 
    } 
 
    content = content.substring(0, content.length - 1); 
 
    return content; 
 
    }; 
 

 
    teste = function() { 
 
    var k = 1; 
 
    var tabela = ''; 
 
    tabela = '<table>'; 
 
    for (var i = 1; i < 7; i++) { 
 
     tabela += '<tr>'; 
 
     for (var j = 1; j < 10; j++) { 
 
     tabela += '<td class="redips-drag containerDrop" id="td' + k + '"></td>'; 
 
     k++; 
 
     } 
 
     tabela += '</tr>'; 
 
    } 
 
    tabela += '</table>'; 
 
    document.getElementById('areaPlotar').innerHTML = tabela; 
 
    }; 
 

 
    insertAfter = function(newNode, referenceNode) { 
 
    referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling); 
 
    }; 
 

 
    teste(); 
 
    redipsInit(); 
 

 
})();
.containerDrag { 
 
    width: 23px; 
 
    height: 26px; 
 
    border: 1px rgb(255, 255, 188) double; 
 
    background: rgb(255, 255, 110); 
 
} 
 
.containerDrop { 
 
    width: 23px; 
 
    height: 26px; 
 
    border: 1px rgb(140, 173, 188) double; 
 
    background: rgb(10, 255, 255); 
 
} 
 
.icon1 { 
 
    background: url(https://fbstatic-a.akamaihd.net/rsrc.php/yV/r/hzMapiNYYpW.ico) no-repeat center; 
 
    width: 20px; 
 
    height: 20px; 
 
    cursor: pointer; 
 
    float: left; 
 
    border: 1px rgb(89, 89, 89) solid; 
 
    border-radius: 7px; 
 
} 
 
.icon2 { 
 
    background: url(http://img3.wikia.nocookie.net/__cb20130407235019/logopedia/images/1/13/YouTube_Favicon_2009.png) no-repeat center; 
 
    width: 20px; 
 
    height: 20px; 
 
    cursor: pointer; 
 
    float: left; 
 
    border: 1px rgb(89, 89, 89) solid; 
 
    border-radius: 7px; 
 
} 
 
.icon3 { 
 
    background: url(http://www.correiodopovo.com.br/blogs/juremirmachado/wp-content/themes/ifeature/images/social/twitter.png) no-repeat center; 
 
    width: 20px; 
 
    height: 20px; 
 
    cursor: pointer; 
 
    float: left; 
 
    border: 1px rgb(89, 89, 89) solid; 
 
    border-radius: 7px; 
 
} 
 
.icon4 { 
 
    background: url(http://socialmercosul.org/wp-content/themes/mercosul/imagens/instagram.png) no-repeat center; 
 
    width: 20px; 
 
    height: 20px; 
 
    cursor: pointer; 
 
    float: left; 
 
    border: 1px rgb(89, 89, 89) solid; 
 
    border-radius: 7px; 
 
} 
 
.icon5 { 
 
    background: url(http://www.jodonto.com.br/_img/icone_msn_rodape_jodonto.png) no-repeat center; 
 
    width: 20px; 
 
    height: 20px; 
 
    cursor: pointer; 
 
    float: left; 
 
    border: 1px rgb(89, 89, 89) solid; 
 
    border-radius: 7px; 
 
} 
 
.icon6 { 
 
    background: url(http://www.howto-outlook.com/pictures/signature_icons/skype-add.png) no-repeat center; 
 
    width: 20px; 
 
    height: 20px; 
 
    cursor: pointer; 
 
    float: left; 
 
    border: 1px rgb(89, 89, 89) solid; 
 
    border-radius: 7px; 
 
} 
 
.icon7 { 
 
    background: url(http://www.pedroquintanilha.com.br/wp-content/plugins/custom-about-author/images/social_media/google_plus.png) no-repeat center; 
 
    width: 20px; 
 
    height: 20px; 
 
    cursor: pointer; 
 
    float: left; 
 
    border: 1px rgb(89, 89, 89) solid; 
 
    border-radius: 7px; 
 
} 
 
.icon8 { 
 
    background: url(http://fabc.com.br/fabc/wp-content/themes/campus/assets/images/theme/social-icons/obox/linkedin-32.png) no-repeat center; 
 
    width: 20px; 
 
    height: 20px; 
 
    cursor: pointer; 
 
    float: left; 
 
    border: 1px rgb(89, 89, 89) solid; 
 
    border-radius: 7px; 
 
} 
 
.icon9 { 
 
    background: url(https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xaf1/v/t1.0-1/p50x50/11148346_1038325069518441_1839972097583978647_n.jpg?oh=5a13d5720b8f67d33299139b88a00cb7&oe=55E9DCAA&__gda__=1445400103_eff89331b290b65ef933085385c89b93) no-repeat center; 
 
    width: 20px; 
 
    height: 20px; 
 
    cursor: pointer; 
 
    float: left; 
 
    border: 1px rgb(89, 89, 89) solid; 
 
    border-radius: 7px; 
 
}
<script src="http://www.redips.net/my/preview/REDIPS_drag/redips-drag-min.js"></script> 
 
<div id="redips-drag"> 
 
    <div id="selecionaveis" class="selecionaveis"> 
 
    <table> 
 
     <tr> 
 
     <td class="containerDrag"> 
 
      <div id="drag-1" class="redips-drag redips-clone icon1"></div> 
 
     </td> 
 
     <td class="containerDrag"> 
 
      <div id="drag-2" class="redips-drag redips-clone icon2"></div> 
 
     </td> 
 
     <td class="containerDrag"> 
 
      <div id="drag-3" class="redips-drag redips-clone icon3"></div> 
 
     </td> 
 
     </tr> 
 
     <tr> 
 
     <td class="containerDrag"> 
 
      <div id="drag-4" class="redips-drag redips-clone icon4"></div> 
 
     </td> 
 
     <td class="containerDrag"> 
 
      <div id="drag-5" class="redips-drag redips-clone icon5"></div> 
 
     </td> 
 
     <td class="containerDrag"> 
 
      <div id="drag-6" class="redips-drag redips-clone icon6"></div> 
 
     </td> 
 
     </tr> 
 
     <tr> 
 
     <td class="containerDrag"> 
 
      <div id="drag-7" class="redips-drag redips-clone icon7"></div> 
 
     </td> 
 
     <td class="containerDrag"> 
 
      <div id="drag-8" class="redips-drag redips-clone icon8"></div> 
 
     </td> 
 
     <td class="containerDrag"> 
 
      <div id="drag-9" class="redips-drag redips-clone icon9"></div> 
 
     </td> 
 
     </tr> 
 
    </table> 
 

 
    </div> 
 
    <div id="areaPlotar" class="areaPlotar"></div> 
 
</div>

Щелкнув элемент хотел его вытянуть так, например, если это с etted занимать три области:

inserir a descrição da imagem aqui

И когда вы добавляете элемент в области plotável он должен выглядеть следующим образом:

inserir a descrição da imagem aqui

Я взял прочитанный на documentation available on the site, но по-прежнему трудно для меня создайте это логическое ....

Извините плохой английский, но не говорите по-английски свободно ...

ответ

1

Я разработчик REDIPS.drag и смотрите следующую jsFiddle демо:

http://jsfiddle.net/dvxokzLw/1/

Demo показывает, как можно клонировать упал DIV элемента рядом с клеткой-мишенью. JavaScript код прост и должен быть хорошей базой для продолжения разработки:

// define event handler after cloned element is dropped 
// tc is target cell reference (where element is dropped) 
rd.event.clonedDropped = function (tc) { 
    var n1 = tc.nextElementSibling, // first cell next to dropped element 
     n2,       // second cell next to dropped element 
     objNew;      // cloned element 
    // clone first element (if next cell exists) 
    if (n1) { 
     n2 = n1.nextElementSibling,  // try to set reference to second cell 
     objNew = rd.cloneObject(rd.obj); // clone itself 
     n1.appendChild(objNew);   // append to first cell 
    } 
    // clone second element (if second cell exists) 
    if (n2) { 
     objNew = rd.cloneObject(rd.obj); // clone itself 
     n2.appendChild(objNew);   // append to second cell 
    } 
}; 

Если вам нужна дополнительная помощь, не стесняйтесь связаться со мной.

Cheers!

+0

так, это почти что. Мне нужно только создать способ, когда я нажимаю и перетаскиваю элемент и перетаскиваю его, он должен оставаться с дублирующимся представлением и бросать его в нижнюю область, он становится единственным элементом, каждый раз, когда я выбираю нижние элементы, перетаскиваю это все остальные, которые были созданы с этим – MarceloBoni

+0

примерно так: http://jsfiddle.net/dvxokzLw/2/ – MarceloBoni

+0

и образ, который мне нужен: http://i.stack.imgur.com/zc9ap.png – MarceloBoni

0

Спасибо за помощь, полученную пользователем @dbunic и @MaiconCarraro, получено here SOpt удалось решить проблему. Ниже приведен полный код, если когда-нибудь быть полезным для кого-то:

"use strict"; 
 

 
var redipsInit, 
 
    areaPlotMusica, 
 
    showContent, 
 
    getContent, 
 
    criaClones, 
 
    removeClones; 
 

 
areaPlotMusica = function(){ 
 
    var k = 1; var tabela = ''; 
 
    tabela = '<table id="table0">'; 
 
    for (var i = 0; i < 10; i++) { 
 
    tabela += '<tr class="containerFaixa">'; 
 
    for (var j = 0; j < 10; j++) { 
 
     tabela += '<td class="redips-drag containerDrop" id="td'+k+'"></td>'; 
 
     k++; 
 
    } 
 
    tabela += '</tr>'; 
 
    } 
 
    tabela += '</table>'; 
 
    document.getElementById('areaPlotar').innerHTML = tabela; 
 
} 
 

 
redipsInit = function() { 
 
    areaPlotMusica(); 
 
    var rd = REDIPS.drag; 
 
    rd.dropMode = 'single'; 
 
    rd.hover.colorTd = 'rgb(159, 176, 183)'; 
 
    rd.init(); 
 

 
    rd.event.moved = function() {   
 
    var ids = rd.obj.id; 
 
    if(ids.length > 9) ids = ids.substring(0, 10); 
 
    if(ids.length < 9) return; 
 
    var divs = document.querySelectorAll("div[id^=" + ids + "]"); 
 
    for (var i=0;i<divs.length;i++) if (divs[i] != rd.obj) rd.deleteObject(divs[i]); 
 
    criaClones(rd.obj); 
 
    showContent(); 
 
    }; 
 

 
    rd.event.dropped = function (tc) { 
 
    var ids = rd.obj.id.split("-"); 
 
    var id = ids[2].substring(0, 1); 
 
    if(id < 4){ 
 

 
    }else if(id > 3 && id < 7){ 
 
     var n1 = tc.nextElementSibling, 
 
      objNew; 
 
     removeClones(rd.obj); 
 

 
     if (n1) { 
 
     objNew = rd.cloneObject(rd.obj); 
 
     n1.appendChild(objNew); 
 
     } 
 
    }else{ 
 
     var n1 = tc.nextElementSibling, // first cell next to dropped element 
 
      n2,       // second cell next to dropped element 
 
      n3,       // thirt cell next to dropped element 
 
      objNew;      // cloned element 
 
     removeClones(rd.obj); 
 

 
     if (n1) { 
 
     n2 = n1.nextElementSibling,  // try to set reference to second cell 
 
      objNew = rd.cloneObject(rd.obj); // clone itself 
 
     n1.appendChild(objNew);   // append to first cell 
 
     } 
 
     if (n2) { 
 
     n3 = n2.nextElementSibling,  // try to set reference to second cell 
 
      objNew = rd.cloneObject(rd.obj); // clone itself 
 
     n2.appendChild(objNew);   // append to second cell 
 
     } 
 
     if (n3) { 
 
     objNew = rd.cloneObject(rd.obj); // clone itself 
 
     n3.appendChild(objNew);   // append to second cell 
 
     } 
 
    } 
 

 
    showContent(); 
 
    }; 
 
}; 
 

 
showContent = function() { 
 
    var log = ''; 
 
    var message = document.getElementById('message'); 
 
    for (var i = 1; i <= 100; i++) { 
 
    log += 'td'+i+' = ' + getContent('td'+i) + '<br>'; 
 
    } 
 

 
    message.innerHTML = log; 
 
}; 
 

 
getContent = function (id) { 
 
    var td = document.getElementById(id), 
 
     content = '', 
 
     cn, i; 
 
    for (i = 0; i < td.childNodes.length; i++) { 
 
    cn = td.childNodes[i]; 
 
    if (cn.nodeName === 'DIV' && cn.className.indexOf('drag') > -1) { 
 
     content += cn.id + '_'; 
 
    } 
 
    } 
 
    content = content.substring(0, content.length - 1); 
 
    return content; 
 
}; 
 

 
criaClones = function (divClicado) { 
 
    var ids = divClicado.id.split("-"); 
 
    var id = ids[2].substring(0, 1); 
 
    if(id < 4){ 
 

 
    }else if(id > 3 && id < 7){ 
 
    var divAux = divClicado.cloneNode(0); 
 
    divAux.style.top = "initial"; 
 
    divAux.style.left = "initial"; 
 
    divAux.style.position = "initial"; 
 
    divAux.style.marginLeft = "28px"; 
 
    divAux.style.marginTop = "-1px"; 
 
    divClicado.appendChild(divAux); 
 
    }else{ 
 
    var divAux = divClicado.cloneNode(0); 
 
    divAux.style.top = "initial"; 
 
    divAux.style.left = "initial"; 
 
    divAux.style.position = "initial"; 
 
    var divAux2 = divAux.cloneNode(0); 
 
    divAux.style.marginLeft = "28px"; 
 
    divAux.style.marginTop = "-1px"; 
 
    divAux2.style.marginLeft = "57px"; 
 
    divAux2.style.marginTop = "-22px"; 
 
    var divAux3 = divAux2.cloneNode(0); 
 
    divAux3.style.marginLeft = "86px"; 
 
    divAux3.style.marginTop = "-22px"; 
 
    divClicado.appendChild(divAux); 
 
    divClicado.appendChild(divAux2); 
 
    divClicado.appendChild(divAux3); 
 
    } 
 

 
}; 
 

 
// remove duplicate element 
 
removeClones = function (div) { 
 
    while (div.hasChildNodes()) { 
 
    div.removeChild(div.lastChild); 
 
    } 
 
}; 
 

 
// add onload event listener 
 
if (window.addEventListener) { 
 
    window.addEventListener('load', redipsInit, false); 
 
}else if (window.attachEvent) { 
 
    window.attachEvent('onload', redipsInit); 
 
}
.containerDrag { 
 
    width: 23px; 
 
    height: 26px; 
 
    border: 1px rgb(255, 255, 188) double; 
 
    background: rgb(255, 255, 110); 
 
} 
 

 
.containerMessage { 
 
    position: absolute; 
 
    overflow: auto; 
 
    height: 310px; 
 
    width: 250px; 
 
    left: 50%; 
 
    background: rgb(255, 255, 110); 
 
} 
 

 
.containerDrop { 
 
    width: 23px; 
 
    height: 26px; 
 
    border: 1px rgb(140, 173, 188) double; 
 
    background: rgb(10, 255, 255); 
 
} 
 

 
.icon1 { 
 
    background: url(http://www.1914-1918-online.net/_rechte_seite/social_media_icons/icon_facebook_20.png) no-repeat center; 
 
    width: 20px; 
 
    height: 20px; 
 
    cursor: pointer; 
 
    float: left; 
 
    border: 1px rgb(89, 89, 89) solid; 
 
    border-radius: 7px; 
 
} 
 

 
.icon2 { 
 
    background: url(http://www.gaba-network.org/Files/Images/Buttons/SocialMedia_youtube_20x20.png) no-repeat center; 
 
    width: 20px; 
 
    height: 20px; 
 
    cursor: pointer; 
 
    float: left; 
 
    border: 1px rgb(89, 89, 89) solid; 
 
    border-radius: 7px; 
 
} 
 
.icon3 { 
 
    background: url(http://www.correiodopovo.com.br/blogs/juremirmachado/wp-content/themes/ifeature/images/social/twitter.png) no-repeat center; 
 
    width: 20px; 
 
    height: 20px; 
 
    cursor: pointer; 
 
    float: left; 
 
    border: 1px rgb(89, 89, 89) solid; 
 
    border-radius: 7px; 
 
} 
 

 
.icon4 { 
 
    background: url(http://socialmercosul.org/wp-content/themes/mercosul/imagens/instagram.png) no-repeat center; 
 
    width: 20px; 
 
    height: 20px; 
 
    cursor: pointer; 
 
    float: left; 
 
    border: 1px rgb(89, 89, 89) solid; 
 
    border-radius: 7px; 
 
} 
 

 
.icon5 { 
 
    background: url(http://www.jodonto.com.br/_img/icone_msn_rodape_jodonto.png) no-repeat center; 
 
    width: 20px; 
 
    height: 20px; 
 
    cursor: pointer; 
 
    float: left; 
 
    border: 1px rgb(89, 89, 89) solid; 
 
    border-radius: 7px; 
 
} 
 

 
.icon6 { 
 
    background: url(http://www.howto-outlook.com/pictures/signature_icons/skype-add.png) no-repeat center; 
 
    width: 20px; 
 
    height: 20px; 
 
    cursor: pointer; 
 
    float: left; 
 
    border: 1px rgb(89, 89, 89) solid; 
 
    border-radius: 7px; 
 
} 
 

 
.icon7 { 
 
    background: url(http://www.pedroquintanilha.com.br/wp-content/plugins/custom-about-author/images/social_media/google_plus.png) no-repeat center; 
 
    width: 20px; 
 
    height: 20px; 
 
    cursor: pointer; 
 
    float: left; 
 
    border: 1px rgb(89, 89, 89) solid; 
 
    border-radius: 7px; 
 
} 
 

 
.icon8 { 
 
    background: url(http://fabc.com.br/fabc/wp-content/themes/campus/assets/images/theme/social-icons/obox/linkedin-32.png) no-repeat center; 
 
    width: 20px; 
 
    height: 20px; 
 
    cursor: pointer; 
 
    float: left; 
 
    border: 1px rgb(89, 89, 89) solid; 
 
    border-radius: 7px; 
 
} 
 

 
.icon9 { 
 
    background: url(http://www.myiconfinder.com/uploads/iconsets/20-20-556599c9fb64134dd4c984c6a08b949a.png) no-repeat center; 
 
    width: 20px; 
 
    height: 20px; 
 
    cursor: pointer; 
 
    float: left; 
 
    border: 1px rgb(89, 89, 89) solid; 
 
    border-radius: 7px; 
 
}
<script src="http://www.redips.net/my/preview/REDIPS_drag/redips-drag-min.js"></script> 
 
<div id="redips-drag"> 
 
    <div id="selecionaveis" class="selecionaveis"> 
 
    <table> 
 
     <tr> 
 
     <td class="containerDrag"> 
 
      <div id="drag-1-1" class="redips-drag redips-clone icon1"></div> 
 
     </td> 
 
     <td class="containerDrag"> 
 
      <div id="drag-1-2" class="redips-drag redips-clone icon2"></div> 
 
     </td> 
 
     <td class="containerDrag"> 
 
      <div id="drag-1-3" class="redips-drag redips-clone icon3"></div> 
 
     </td> 
 
     </tr> 
 
     <tr> 
 
     <td class="containerDrag"> 
 
      <div id="drag-1-4" class="redips-drag redips-clone icon4"></div> 
 
     </td> 
 
     <td class="containerDrag"> 
 
      <div id="drag-1-5" class="redips-drag redips-clone icon5"></div> 
 
     </td> 
 
     <td class="containerDrag"> 
 
      <div id="drag-1-6" class="redips-drag redips-clone icon6"></div> 
 
     </td> 
 
     </tr> 
 
     <tr> 
 
     <td class="containerDrag"> 
 
      <div id="drag-1-7" class="redips-drag redips-clone icon7"></div> 
 
     </td> 
 
     <td class="containerDrag"> 
 
      <div id="drag-1-8" class="redips-drag redips-clone icon8"></div> 
 
     </td> 
 
     <td class="containerDrag"> 
 
      <div id="drag-1-9" class="redips-drag redips-clone icon9"></div> 
 
     </td> 
 
     </tr> 
 
    </table> 
 
<div id="message" class="containerMessage"></div> 
 
    </div> 
 
    <div id="areaPlotar" class="areaPlotar"></div> 
 
</div>

+1

Я рад, что вы решили проблему и спасибо за публикацию полного кода (HTML, CSS и JS). Ура! – dbunic

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