为什么ui.item.attr(“id”)返回未定义的值?

时间:2013-05-28 08:42:24

标签: jquery jsf

我正在<li> <ul>之间进行排序,但当我尝试获取ui.item.attr("id")时,我得到了未定义但其他变量运行良好,如$(this).attr('id')和{{1但是我正在搜索从中拖出元素的'+ui.sender.attr('id')的索引。

我的js文件:

<ul>

我的jsf代码:

 $( 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();

        }

为什么我得到未定义的值以及如何获得此值?

2 个答案:

答案 0 :(得分:3)

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

  

ui.item

     

输入:jQuery

     

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

因此,您的案例ui.item将是被拖动的<li>,因为他们没有设置id属性ui.item.context.id将始终为空。

如果您在li上设置了ID,则可以访问它:http://jsfiddle.net/qj4GG/2/

你想要获得什么属性?你需要什么?

答案 1 :(得分:1)

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

只需将属性[]索引值更改为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
        });
      },