Jquery:如何在加载时禁用图像的单击功能?

时间:2010-09-01 13:19:06

标签: javascript jquery

这不会起作用:

$('div#menuBar,#goLeftBtn,#goRightBtn').attr('disabled', true);

在document.ready

有什么想法吗? 谢谢!

修改
我的HTML基本上是这样的:

  <div id="floatRight">
       <img src="./images/all_left.png" id="goAllLeft" class="arrow" />
       <img src="./images/left.png" id="goLeft" class="arrow" />
       <img src="./images/right.png" id="goRight" class="arrow"/>
       <img src="./images/all_right.png" id="goAllRight" class="arrow" />
    </div>

我知道那些不是上面jquery代码中的确切图像名称,但这就是我所有img的基本设置和放大器的方式。对于那段特定的代码,我只需要禁用那些img。

4 个答案:

答案 0 :(得分:3)

不是在加载时尝试禁用,而是在文档加载之前不绑定点击事件?

如果这些都是没有被锚标记包裹的图像,您可以轻松完成此任务。

<img id="menuBar" />
<img id="goLeftBtn" />
<img id="goRightBtn" />

目前没有绑定点击事件,所以没有什么可以禁用

<script type="text/javascript">
    $(function(){
        $("#goLeftBtn").click(function() { /* go left */ });
        $("#goRightBtn").click(function() { /* go right */ });
        $("#menuBar").click(function() { /* go menu? */ });
    });
</script>

如果你将它们包装在锚标签中,你将无法调用e.preventDefault来停止发生click事件,因为页面未完成加载并且jQuery事件没有被绑定。


如果您将点击事件内联(可能不是一个好主意),那么:

<img id="menuBar" onclick="return DoMenuStuff();" />
<img id="goLeftBtn" onclick="return GoLeft();" />
<img id="goRightBtn" onclick="return GoRight();" />

您可以随时执行以下操作:

<script type="text/javascript">
    var loaded = false;
    $(function(){
        loaded = true; // page done loading
    });

    function DoMenuStuff()
    {
        if(loaded) { /* do stuff */ }
    }

    function GoLeft()
    {
        if(loaded) { /* do stuff */ }
    }

    function GoRight()
    {
        if(loaded) { /* do stuff */ }
    }
</script>

答案 1 :(得分:1)

$('div#menuBar,#goLeftBtn,#goRightBtn').click(function() { return false; });

将一直有效,直到您准备好激活它。

或者实际上为什么不加载点击事件直到它被加载?

答案 2 :(得分:1)

这实际上会起作用,这意味着这会向disabled#menuBar#goLeftBtn添加#goRightBtn属性。
不幸的是,由于event handler不能成为“<img>”,因此disabled无法取消。

所以你需要删除/取消绑定处理程序本身。这又取决于你如何绑定click事件。如果您使用jQuery,则可以使用.unbind()

如果您使用的是inline event handler,则需要删除或修改它,以防止执行点击处理程序。

答案 3 :(得分:0)

您可以在页面上放置<div>,绝对定位以覆盖整个视口,并使其透明,但可以使用大的z-index显示。这应该阻止所有点击进入真正的页面元素。在您的文档“加载”处理程序中,使“裹尸布”<div>消失(或使其“显示:无”)。