3

我正在使用可排序<li>的of,<ul>但是当我尝试获取ui.item.attr("id")未定义的变量时,但其他变量运行良好$(this).attr('id')'+ui.sender.attr('id')但是我正在搜索<ul>从中拖动元素的索引。

我的 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>

为什么我得到未定义的值,我怎样才能得到这个值?

4

2 回答 2

3

问题是这ui.item是一个对象的集合,因此您需要使用ui.item.context.id来获取作为拖动元素的项目的 id,如jQuery Sortable 文档中所指定:

ui.item

类型:jQuery

代表当前拖动元素的 jQuery 对象

因此,您的情况ui.item将是<li>被拖动的情况,并且由于它们没有设置 id 属性,因此它们ui.item.context.id将始终为空。

如果你设置了一个 idli然后你可以访问它:http: //jsfiddle.net/qj4GG/2/

您到底想获得什么财产?你需要它做什么?

于 2013-05-28T14:37:18.153 回答
1

你可以试试 ui.item.option.childNodes[0].parentNode.parentNode.attributes[2].value

只需将 attributes[] 索引值更改为按照 id 的顺序。这里我在 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
        });
      },
于 2015-05-20T11:16:58.223 回答