检查DOM元素是否可拖动并将其设置为JavaScript变量?

4
什么是通过jQuery创建等于DOM元素“draggable”状态的JavaScript变量的最有效方法?
我尝试了以下代码:
$(document).ready(function() {
    $('#editButton').click(function() {
        var isDraggable = $('.tile').draggable('option', 'disabled');
        if(isDraggable == "true")
        {
            $(function() {
                $('.tile').draggable({
                    containment: '#content',
                    scroll: false
                });
                $('.tile').resizable({
                    maxHeight: 200,
                    maxWidth: 200,
                    minHeight: 100,
                    minWidth: 100
                });
            })
        }
    })
});

我没有收到任何语法错误或其他错误提示,但是功能并没有实现。

这里是相应的HTML代码:

<div id="content">
        <div id="navBar">
            <input type="button" id="editButton" value="Edit" />
        </div>
        <ul>
            <li>
                <div id ="google" class="tile">
                    <img src="images/tiles/google/google.png" class="tile_image" width="27" height="41" />
                    <p>Google</p>
                </div>
            </li>
            <li>
                <div id="yahoo" class="tile">
                    <p>Yahoo</p>
                </div>
            </li>
            <li>
                <div id="thelockpeople" class="tile">
                    <p>The Lock People</p>
                </div>
            </li>
            <li>
                <div id="amazon" class="tile">
                    <p>Amazon</p>
                </div>
            </li>
            <li>
                <div id="masterlock" class="tile">
                    <p>Masterlock</p>
                </div>
            </li>
            <li>
                <div id="hpionline" class="tile">
                    <p>Hpionline</p>
                </div>
            </li>
            <li>
                <div id="youtube" class="tile">
                    <p>YouTube</p>
                </div>
            </li>
            <li>
                <div id="kitco" class="tile">
                    <p>Kitco</p>
                </div>
            </li>
            <li>
                <div id="usatoday" class="tile">
                    <p>USA Today</p>
                </div>
            </li>
            <li>
                <div id="gamefly" class="tile">
                    <p>GameFly</p>
                </div>
            </li>
        </ul>
</div>

我做错了什么?

1个回答

4
为了使其工作,只需替换一行代码,该行代码如下:
if(isDraggable == "true")

使用:

if (isDraggable)

原因在于isDraggable是一个对象,如果存在(即“.title” div上的“draggable”方法有效),那么它将为true(存在且非零),但它不等于1,这是true的数字值,所以您原始的测试失败,您从未调用该函数。


谢谢Neil!另外,如果我想检查它是否为“false”怎么办?我知道我可以使用else,但我只是想知道。 - Qcom
1
嗨,要检查是否为“false”,只需说“if (!isDraggable)”即可。 - Neil
再次感谢!我也很感激你在帖子中添加了更多的解释。 - Qcom
1
我会在可拖动元素上设置CSS属性"{cursor: 'move'}",以视觉上表明它们是可拖动的。$('.tile').css({cursor: 'move'}).draggable('option', 'disabled'); - Neil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接