我有一个CMenu
代码,当我尝试删除某个项目时会激活两个确认对话框。
这就是我的CMenu
代码的样子:
$this->widget('zii.widgets.CMenu', array(
'items'=>array(
array('label'=>'List things', 'url'=>array('list')),
array('label'=>'Delete thing', 'url'=>'#', 'linkOptions'=>array(
'submit'=>array(
'delete',
'id'=>$model->thingID
),
'confirm'=>'Are you sure?'
)),
),
'htmlOptions'=>array(
'class'=>'divided'
)
));
我在这段代码中遗漏了什么?为什么确认对话框会触发两次?
编辑:
问题是由skel-panel内部的东西引起的,但我无法找出导致它的确切原因。有关如何在skel-panel中禁用href跟踪的任何想法吗?
编辑2:
我发现了问题的来源,但我不确定如何修复它。事情是skel-panel将整个body
包裹在div中。奇怪的是,它显然处理了所有hrefs
的点击。
initObjects
函数是包装所有内容的函数(此处为https://github.com/n33/skelJS/blob/master/src/skel-panels.js)
编辑3:
好的,我发现了这个错误。它是在jQuery中引起的,它在1.8.3和1.9.0之间得到修复。
我在哪里可以获得这两个版本之间的错误/修复/补丁的详细日志,所以我只能选择我感兴趣的更改? (因为我无法承担升级到jQuery 1.9.x所需的时间)
答案 0 :(得分:1)
我认为它出现两次,因为delete
对CMenu
的调用已经自动触发了对话框。尝试删除
'confirm' => 'Are you sure?'
答案 1 :(得分:0)
嗯,这件事发生在我身上......我不记得为什么。
Yw0
和Yw1
之类的元素提供默认ID等等但是有时因为你构建你的视图的方式,它可能会给两个元素提供相同的ID,所以你可能会得到两个动作,因为有两个听众会听到点击或更改事件。)如果这样做,您可能需要为每个添加唯一ID ,以便一次点击不会触发多个事件(即其他删除按钮的事件)。
试试这个:
...
),
'id' => uniqid('foobarbaz'),
'confirm'=>'Are you sure?'
)),
...