2013-03-11 2 views
-1

Что я пытаюсь сделать, так это переместить элементы li из одного контейнера в другой при нажатии li span. У меня есть выбор и мой контейнер выбора. Если пользователь нажимает на li span (id = "add") из первого контейнера, ли li удаляется и должен появляться во втором. Чем я прихожу со следующей структурой и, возможно, не лучшим решением, потому что у меня возникают проблемы с перемещением только выбранного ли, и я не знаю, как обрабатывать обратные вызовы в этом случае. Буду признателен за рекомендацииli selected issue on jquery

<script> 
(function($){ 
jQuery("#catalog").accordion({ 
heightStyle: "content" 
}); 

jQuery("span#add").click(function(){ 
    jQuery(this).parent().animate(
      { 
       'margin-left':'1000px' 
      },1000, 
      function(){ 
       var ul_class = $(this).parent().attr('class'); 
       $(this).slideUp('fast');    
       $("ul."+ ul_class + "_clone").append($(this).parent().html()); 
       $(this).remove();     
      } 
      ); 

}); 

}) (jQuery); 
</script> 

<?php $datas = json_decode($param[0]->params) ?> 
<div class="config_holder"> 
<div id="products"> 
    <h3>Config Params</h3> 
    <div id="catalog"> 
     <?php foreach ($datas as $key1=>$data):?> 
      <h4><a href="#"><?php if(!empty($key1)) echo $key1 ?></a></h4> 
     <div> 
      <ul class="<?php echo $key1 ?>"> 
       <?php if(!empty($data)):?> 
       <?php foreach($data as $key2=>$item):?> 
       <?php if($key2 !="&nbsp;" || $key2 != " "): ?> 
       <li id="" class="ui-state-default ui-corner-all" ><?php echo $key2; ?><span style="float:right" id="add" class="ui-icon ui-icon-circle-plus"></span></li> 
       <?php endif;?> 
       <?php endforeach; ?>     
       <?php endif;?> 
      </ul> 
     </div> 
     <?php endforeach;?> 
    </div> 
</div> 
<div id="cart"> 
<h3 >Mein Konfiguration</h3> 
<div class="ui-widget-content"> 
<img title="" src="http://i.dell.com/das/dih.ashx/165x130/sites/imagecontent/consumer/merchandizing/de/PublishingImages/165x119/6315-inspiron-17r-5721-165X119-de.png" alt=""> 
<ol> 
<li class="placeholder">My Choises</li> 
<?php foreach ($datas as $key3=>$clone):?> 
<ul class="<?php echo $key3 ?>_clone"></ul> 
<?php endforeach;?> 

</ol> 

</div> 
<a href=""><button>search</button></a> 
</div> 
</div> 
+0

может быть просто так, как вы сформулировать его, но 'вар ul_class = $ (this) .parent(). attr ('id'); 'это id не класс (Edit: это было отредактировано) – DickieBoy

+2

совет: у вас не должно быть более одного элемента с тем же идентификатором. Идентификатор должен быть уникальным для всей страницы. – Jamiec

+1

попробуйте изменить jQuery («span # add.ui-icon») на jQuery («span # add_icon») –

ответ

0

Если вы можете использовать jquery ui, вы можете использовать функцию связанного списка.

$(function() { 
    $("#IdOfFirstList, #IdOfSecondList").sortable({ 
     connectWith: ".commonClassName" 
    }).disableSelection(); 
}); 

Heres ссылка на полный пример http://jqueryui.com/sortable/#connect-lists

+0

спасибо, что я собираюсь попробовать! – fefe

0

Try это ...

$("span, #add, .ui-icon").on('click', function(){ 
    $(this).parent().animate({'margin-left':'1000px'}, 1000, function(){ 
     var ul_class = $(this).parent().attr('id'); 
     $(this).slideUp('fast');    
     $("ul#"+ ul_class + "_clone").append($(this).parent().html()); 
     $(this).remove(); 
    }); 
}); 

И увидеть это DEMO