2013-05-28 4 views
3

Я работаю с сортировкой между <li> из <ul>, но когда я пытаюсь получить ui.item.attr("id") я получил неопределенный, но другие переменные хорошо работает как $(this).attr('id') и '+ui.sender.attr('id'), но я ищу индекс <ul> где элемент тащили из.Почему ui.item.attr ("id") возвращает неопределенное значение?

мой JS файл:

$(init); 
     function init() { 

      $(".list-items").sortable({ 
       connectWith: '.list-items', 
       items: "li:not(.item.new)", 
       placeholder: 'place-holder', 
       scroll: false, 
       tolerance: "pointer",update: function (event, ui) { 
       //alert($(this)); 
      }, 
      receive : function(e, ui) { 
       alert('zone : '+ ui.item.attr("id"));    

       alert('Where the item is dropped : '+$(this).attr('id')); // Where the item is dropped 
       alert('from where the item is dragged : '+ui.sender.attr('id')); // from where the item is dragged 

       if(ui.item.text()=="51173115") { 

         jConfirm('item '+ui.item.context.id+' capacite Cuisson epuise vous voulez continue comme meme ?', 'alerte', function(r) {  
        if(r)   
        { 

        } 
        else 
        { 
         $(ui.sender).sortable('cancel'); // refuse element to be dropped 
        } 
      } 
     } 

}).disableSelection(); 

     } 

мой JSF код:

<div class="gauchedragdrop"> 

     <p class="ui-widget-header" style="margin:0;padding:5px;color: #2779bb;">tableof</p> 
      <ul id="ulgauche" class="list-items ui-sortable " > 
      <ui:repeat value="#{gestionduplanning.listzp01Equipe}" var="vari" > 
        <li class="item"><a title="#{vari.ordre.toString()}">#{vari.ordre.toString()}</a></li> 
      </ui:repeat>    
      </ul>  
</div> 
<div class="droitedragdrop"> 

      <p:dataTable var="op" value="#{ gestionduplanning.EQlistoneequipe.get(0).listop}" style="width: 700px;float: left;"> 

       <p:column headerText ="les of" style="width:550px;"> 
         <ul id="uldroite" class="list-items ui-sortable"> 
         <ui:repeat value="#{op.orderedOf}" var="vari" > 
          <li class="item" ><a title="#{vari}">#{vari}</a></li> 
         </ui:repeat>       
         </ul> 
       </p:column> 
       </p:dataTable> 

     </div> 

почему я получаю неопределенное значение, и как я могу получить это значение?

+0

Вы не можете использовать 'ui.item.context.id' как в своем коде выше? – Pete

+0

Я ничего не получил с этой проблемой. У меня всегда был id = uldroite, но мне нужно, чтобы каждая ul, созданная в таблице, получила индекс этого – marouanoviche

+0

, когда ul создала динамически и имела одинаковый идентификатор. Какая разница между каждым UL – marouanoviche

ответ

3

Проблема заключается в том, что ui.item представляет собой набор объектов, поэтому вам нужно использовать ui.item.context.id, чтобы получить идентификатор элемента, который является тащили элемент, как указано в jQuery Sortable documentation:

ui.item

Тип: JQuery

объект, представляющий JQuery текущий элемент перетаскивается

Итак, ваш случай ui.item будет перетаскиваться в <li>, так как у них нет атрибута id, установленного на них. ui.item.context.id всегда будет пустым.

Если установить идентификатор на li, то вы можете получить доступ к нему: http://jsfiddle.net/qj4GG/2/

Какое свойство именно вы пытаетесь получить? Для чего тебе это?

1

Вы можете попробовать ui.item.option.childNodes[0].parentNode.parentNode.attributes[2].value

Только изменение атрибутов [] значение индекса как в порядке ид. Здесь у меня есть два атрибута перед id.

this._on(this.input, { 
     autocompleteselect: function(event, ui) { 
     ui.item.option.selected = true; 
     alert(ui.item.option.childNodes[0].parentNode.parentNode.attributes[2].value); 
     this._trigger("select", event, { 
      item: ui.item.option 
     }); 
     }, 
Смежные вопросы