2014-02-14 41 views
3

对此很新颖,我已经用onClick命令卡住了,它令我困惑。使用onClick打开对话框卡住

什么意思发生: 用户点击购物车文本(在一个样式的div元素内),它打开一个对话框,其中包含用户购物车的内容。

这里的代码如下...

我想我这个星期做一点点来就像我可能失去了一些东西真的很容易,我只是愚蠢。

任何帮助将不胜感激。

复制代码

<script type="text/javascript"> 
$(function() { 
$('div.dialog').dialog({modal:true,autoOpen:false}); 
$('CartLink').on('click', function() { 
    var index = $(this).index() + 1; 
    $('#dialog' + index).dialog('open'); 
}); 
}); 
</script> 

    <div class="dialog" id="dialog1">Shopping Cart Contents</div> 

<div id="CartLink" class="fluid ShoppingCart"><img src="images/Site/Shopping_cart.gif"   
alt="" width="25" height="23"/>Shopping Cart</div> 
+0

是什么CARTLINK?如果它是一个ID然后使用#,如果一个类 - 使用点'。' – Pavlo

+0

啊,谢谢大家的回复!非常感谢:)我试图按建议更新这个,但对话框仍然无法打开:( – Earunder

回答

3

你缺少#看起来像你缺少#目标id这里

$('#CartLink').on('click', function() { 
//-^ here ----- 
    var index = $(this).index() + 1; 
    $('#dialog' + index).dialog('open'); 
}); 

您需要更改:

var index = $(this).index() + 1; 

到:

var index = $(this).index(); 

,因为目前你#CartLinkindex10如你所期望的。所以你不需要再增加1

+0

啊谢谢大家为你的非常快速的回复!非常感谢:)我试图按建议更新这个,但对话框仍然不会打开:( – Earunder

+0

你有任何错误控制台? – Felix

+0

没有错误,没有页面加载问题当我设置autoOpen:true时,对话框加载,因此它应该也是正确显示我很难受 – Earunder

4

id selector

$(function() { 
    $('div.dialog').dialog({modal:true,autoOpen:false}); 
    $('#CartLink').on('click', function() { 
    //.^.....add # here....... 
     var index = $(this).index(); 
     $('#dialog' + index).dialog('open'); 
    }); 
}); 
+2

啊哈谢谢大家的非常快速的回复!非常感谢:) 我试图按建议更新此,但该对话框仍然不会打开:( – Earunder

0

不要依赖.index()将对话框链接到您的按钮。你问的例子,因为目前,div#CartLink是其父节点中的第二个孩子,但任何修改您的HTML(在div中添加标题,必须将按钮移动到屏幕的另一部分等...) )将打破这一假设。

一个简单的方法就是把目标对话ID明确自定义属性:

<div id="dialog1">...</div> 
<div id="CartLink" data-dialog="dialog1" class="...">...</div> 


$('#CartLink').on('click', function(){ 
    var id = $(this).attr('data-dialog'); 
    $('#'+id).dialog('open'); 
});