具有子输入的Dojo ListItem
我有一个可以单击的dojo列表项。。但同时我们喜欢将输入元素放在列表项中。问题是,如果单击子元素example复选框,listitem onclick会首先截获调用,这似乎与html气泡格式相反。因此,我们不能在子元素上调用stoppropagation来阻止listitem更改页面 在下面的示例中,您将看到listitem警报出现在复选框警报之前 如何在不触发listitem的情况下处理listitem中的输入元素 小提琴:: 前具有子输入的Dojo ListItem,dojo,Dojo,我有一个可以单击的dojo列表项。。但同时我们喜欢将输入元素放在列表项中。问题是,如果单击子元素example复选框,listitem onclick会首先截获调用,这似乎与html气泡格式相反。因此,我们不能在子元素上调用stoppropagation来阻止listitem更改页面 在下面的示例中,您将看到listitem警报出现在复选框警报之前 如何在不触发listitem的情况下处理listitem中的输入元素 小提琴:: 前 前一段时间我遇到了类似的问题,并注意到dojox/mobile
前一段时间我遇到了类似的问题,并注意到dojox/mobile/ListItem在向其复选框、触摸手势等添加额外的事件处理程序时并不是很好,因此为了解决这个问题,我通常扩展dojox/mobile/ListItem并自行修复事件 例如: var CheckedListItem=declaredojox/mobile/CheckedListItem[ListItem]{ _initializeCheckbox:函数{ this.checkbox=新建复选框{ }; domConstruct.placethis.checkbox.domNode,this.containerNode.firstChild,last; this.checkbox.startup; this.checkbox.onClick=this.oncheckbox单击; }, onCheckboxClick:函数{}, _setOnCheckboxClickAttr:functionhandler{ this.onCheckboxClick=handler; 如果this.checkbox!==null&&this.checkbox!==未定义{ this.checkbox.onClick=handler; } }, _onClick:function{ 如果e.target!==this.checkbox.domNode{ 这是继承的论据; } }, 后创建:函数{ 这是继承的论据; 这个._initializeCheckbox; } }; 由于重写了onClick并添加了额外的检查,我成功地获得了预期的行为 以下是一个完整的示例:
var list1 = registry.byId("myList");
var item = new ListItem ({
label: "A \"programmatic\" ListItem",
moveTo: "#",
noArrow:true,
onClick : function() {
alert("listItem clicked !" + event.target.type);
}
});
list1.addChild(item);
var check = new cb({onClick:function(){alert("checkbox clicked");event.stopPropagation();}});
check.placeAt(item.containerNode.firstChild);
check.startup();