Я пытаюсь изменить индекс div внутри основного Div.But, он работает не так, как ожидалось.
Вот мой html-код
<div id="divAll">
<div id="divVideo">
Video
</div>
<div id="divAudio">
Audio
</div>
<div id="divImage">
Image
</div>
</div>
<input id="btn" type="button" />
И вот код jQuery
function Rearrange(videoP,audioP,imageP){
if(videoP=="1"){
$('#divAll').prependTo('#divVideo');
}
else if(audioP=="1"){
$('#divAll').prependTo('#divAudio');
}
else if(imageP=="1"){
$('#divAll').prependTo('#divImage');
}
if(videoP=="2"){
$('#divAll div:eq(1)').after('#divVideo');
}
else if(audioP=="2"){
$('#divAll div:eq(1)').after('#divAudio');
}
else if(imageP=="2"){
$('#divAll div:eq(1)').after('#divImage');
}
if(videoP=="3"){
$('#divAll div:eq(2)').after('#divVideo');
}
else if(audioP=="3"){
$('#divAll div:eq(2)').after('#divAudio');
}
else if(imageP=="3"){
$('#divAll div:eq(2)').after('#divImage');
}
}
$('#btn').click(function(){
Rearrange(3,2,1);
});
При нажатии кнопки я пытаюсь изменить положение divs в соответствии с параметрами для функции, но в результате этого нет div в главном div.
Вот jsfiddle
Это может быть одно из возможных решений
function Rearrange(videoP,audioP,imageP){
$('#temp').append($('#divAll div'));
alert($('#temp').html());
for(i=1;i<4;i++)
{
if(i==videoP)
$('#divAll').append($('#divVideo'));
if(i==audioP)
$('#divAll').append($('#divAudio'));
if(i==imageP)
$('#divAll').append($('#divImage'));
}
}
редактировать
Если вы можете передать массив идентификаторов, чтобы решить заказ, вы придумаете более общее решение.
function Rearrange(arrOfId){
$('#temp').append($('#divAll div'));
for(i=0;i<arrOfId.length;i++)
$('#divAll').append($('#' + arrOfId[i]));
}
$('#btn').click(function(){
Rearrange(['divImage', 'divAudio','divVideo']);
});
возможно, это работает для вас.
function Rearrange(videoP,audioP,imageP){
$divtemp =$('#divAll').clone().html("");
if(videoP==audioP || audioP== imageP || videoP == imageP)
{
alert("access denied");
}
else
{
if(videoP=="1"){
$divtemp.append($("#divVideo").clone());
}
else if(audioP=="1"){
$divtemp.append($("#divAudio").clone());
}
else if(imageP=="1"){
$divtemp.append($("#divImage").clone());
}
if(videoP=="2"){
$divtemp.append($("#divVideo").clone());
}
else if(audioP=="2"){
$divtemp.append($("#divAudio").clone());
}
else if(imageP=="2"){
$divtemp.append($("#divImage").clone());
}
if(videoP=="3"){
$divtemp.append($("#divVideo").clone());
}
else if(audioP=="3"){
$divtemp.append($("#divAudio").clone());
}
else if(imageP=="3"){
$divtemp.append($("#divImage").clone());
}
$("#divAll").html("");
$("#divAll").append($divtemp.html());
}
}
$("#btn").click(function(){
Rearrange(2,3,1);
});
эту проблему можно легко сделать, используя эту небольшую функцию. Нет необходимости в дополнительном div.
function Rearrange_Div(array){
for(i=0;i<array.length;i++)
$('#divAll').append($('#' + array[i]));
}
$('#divAll').prependTo('#divVideo');
может работать - он пытается поместить родителя в своего потомка. Но это значит, что ребенок должен стать внуком самого себя.