这不会起作用:
$('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。
答案 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>
消失(或使其“显示:无”)。