[]list的selectHandler属性连续点击同一个item不能重复接收事件
使用的是引擎示例中的代码:https://layaair.ldc.layabox.com/demo/?category=2d&group=UI&name=List
list.selectEnable = true;
list.selectHandler = new Handler(this, onSelect);
function onSelect(index)
{
alert("当前选择的索引:" + index);
}
第一次点击时有事件响应:
再次点击(不要点击其它的列表),就不会有响应事件:
希望能解决这个问题,是有这个需求的,比如list在A界面,选中后跳到B界面,返回后,再次点击同一行就无法再次进入,尤其是当list还只有1行时,就无法再次看到B界面。
list.selectEnable = true;
list.selectHandler = new Handler(this, onSelect);
function onSelect(index)
{
alert("当前选择的索引:" + index);
}
第一次点击时有事件响应:
再次点击(不要点击其它的列表),就不会有响应事件:
希望能解决这个问题,是有这个需求的,比如list在A界面,选中后跳到B界面,返回后,再次点击同一行就无法再次进入,尤其是当list还只有1行时,就无法再次看到B界面。
list.selectHandler = new Handler(this, onSelect);//设置 list 改变选择项执行的处理器。
selectHandler只有你改变选择项的时候才执行一次哦!
selectHandler只有你改变选择项的时候才执行一次哦!
这个问题没人解决吗
我自己解决了,mouseHandler,可以接收所有事件,在这里面判断是否有点击事件。
改源码方案可以这样:
laya.ui.js改成这样即可,去掉判断if (this._selectedIndex !=value)
__getset(0,__proto,'selectedIndex',function(){
return this._selectedIndex;
},function(value){
//if (this._selectedIndex !=value){
this._selectedIndex=value;
this.changeSelectStatus();
this.event(/*laya.events.Event.CHANGE*/"change");
this.selectHandler && this.selectHandler.runWith(value);
this.startIndex=this._startIndex;
//}
});
laya.ui.js改成这样即可,去掉判断if (this._selectedIndex !=value)
__getset(0,__proto,'selectedIndex',function(){
return this._selectedIndex;
},function(value){
//if (this._selectedIndex !=value){
this._selectedIndex=value;
this.changeSelectStatus();
this.event(/*laya.events.Event.CHANGE*/"change");
this.selectHandler && this.selectHandler.runWith(value);
this.startIndex=this._startIndex;
//}
});
本来select事件就是这么设计的,你若想要每次点击都触发,自己给元素注册一个click事件啊(或者将事件委托给父元素),能不改源码尽量别改。
要回复问题请先登录