代码之家  ›  专栏  ›  技术社区  ›  Jon

获取jquery ui.draggable的属性

  •  8
  • Jon  · 技术社区  · 14 年前

    我正在使用jqueryui在我的某个页面上进行拖放,出于某种原因,我似乎无法获得ui.draggable对象的属性,而该属性正被传递到我的Droppable Drop事件中。

    ui.draggable.attr(“src”)和$(ui.draggable).attr(“src”)都返回未定义,但是如果我键入ui.draggable.html(),我将返回HTML。有什么想法吗?

    4 回复  |  直到 8 年前
        1
  •  10
  •   Jon    14 年前

    我明白了。解决方案是调用ui.draggable.find(“img”).attr(“src”),我只是假设ui.draggable对象是一个图像。

        2
  •  2
  •   Siwei    11 年前

    @乔恩的回答是正确的。解决方法只是简单地尝试一下 attr 方法,而不必事先检查可拖动的元素(否则您将感到困惑)。

    给定一个声明为jquery用户界面的“draggable”的HTML元素:

    <img src='some/path/for/this/image' class='draggable_img' title='I am an image!' />
    

    如果这个“DIV”是可删除的:

    <div id='droppable_area'> </div>
    
    <script>
    $('img.candidate_thumbnail').droppable({
      drop: function(event, ui) {
        console.info('ui.draggable.title:' + ui.draggable.title);
        console.info('ui.draggable.attr("title"):' + ui.draggable.attr('title'));
        console.dir('ui.draggable:' + ui.draggable);
      }    
    </script>
    

    我得到:

    ui.draggable.title: undefined
    ui.draggable.attr("title"): I am an image!
    ui.draggable: [object Object]
      -> No Properties
    
        3
  •  1
  •   bensiu CandorZ    12 年前

    例如,你可以这样做

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title>New Web Project</title>
            <script src="jquery-1.5.min.js"></script>
            <script src="jquery-ui-1.8.16.custom.min.js"></script>          
            <style>         
            body{
                margin:0;
                padding:0;
            }
    
            .box{
                display:block;
                width:100px;
                height:50px;
                background-color:green;
                border:1px solid #000;
            }
    
            #drop{
                position:absolute;
                top:220px;
                left:220px;
                width:250px;
                height:250px;
                border:1px solid red;
                background:yellow;
                z-index:1;
            }
            </style>
            <script type="text/javascript">
            $(document).ready(function(){
    
                $('#boxBesar p').each(function(index,element){
                    $('#boxBesar p:eq('+index+')').css({
                        'border':'1px solid #000',
                        'width':'100px',
                        'height':'100px',
                        'position':'absolute',
                        'left':(index*200)+10,
                        'z-index':index+2,
                        'color':'black',
                        'text-align':'center',
                        'background':'#ccc'
                    })
                })
    
                        .draggable({
                            revert:true
                        })
    
                $('#drop').droppable({
                        drop:dropIt
                })
    
                function dropIt(event,ui){
                                //get an id
                    **var id=ui.draggable.attr('id')**
    
                                //test an id name
                    alert(id)
                }
    
            })
            </script>
        </head>
    
    
        <body>
            <div id="boxBesar">
                <p id="b1">Box 1</p>
                <p id="b2">Box 2</p>
            </div>
    
            <div id="parent">
                <div id="drop" >
    
                </div>
            </div>
        </body>
    
    </html>
    
        4
  •  0
  •   Muhammad Ashikuzzaman    8 年前

    这个答案留给将来的用户。只需逐个ui.draggable控制台日志并展开它,然后ui.draggable.context……等等。您将了解源名称是什么。

    console.log(ui.draggable.context.attributes.src.textContent)