javascript - Prevent Click Event from document Level to child elements -


i create hybrid app using sencha frame work have setting screen, when setting screen visible in screen want prevent touch event user other components except specific views. saw of post saying event stopprogation() , preventdefault() event further not clear it.

i tried add click event document release setting list view when user tap on screen if user tap on other component in screen trigger button action also, how prevent this.

also don't want prevent action of touch when user click on setting list or specific component in view.

note: not able use jquery in project because using jquery side sencha may cause performance issue.

code:

ext.define('myapp.view.controlpanel.controlpanel', {     extend: 'ext.container',     alias: "widget.controlpanel",     requires: [                    'ext.segmentedbutton'     ],     config: {         layout: {             pack:'stretch'         },         docked:'bottom'     },     documentclickhandler:function(event){         console.log('document clicked');          document.removeeventlistener('click', arguments.callee, false);          var settinglistcontainer = ext.componentquery.query("#setting-list-container")[0];         if (settinglistcontainer) {             var controlpanel = settinglistcontainer.up('controlpanel');             if (controlpanel) {                 controlpanel.remove(settinglistcontainer, true);                 var segmentbutton = controlpanel.down("#control-segment-button");                 if (segmentbutton) {                     segmentbutton.setpressedbuttons();                 }             }         }         event.preventdefault();         return false;;     },      onsegmenttoggled: function (container, button, pressed)     {                    console.log("toggle event");             var index = container.getitems().indexof(button);             if (index == 0) {                 if (pressed) {                     container.setpressedbuttons();                     var settinglistcontainer = this.down("#setting-list-container");                     if (settinglistcontainer) {                         this.remove(settinglistcontainer, true);                         // close nav touching partial off-screen content                      }                 }             }a             else {                 var settinglistcontainer = this.down("#setting-list-container");                 if (!pressed&&settinglistcontainer) {                     this.remove(settinglistcontainer, true);                 }                 else if (pressed) {                     var existinglist = ext.componentquery.query('settinglist')[0];                     if (existinglist) {                         this.add(existinglist);                         document.addeventlistener('click', this.documentclickhandler, false);                     }                     else {                         this.add({ xtype: "settinglist", height: '349px', sorthandler: this.config.sorthandler, segmentcontrol: container });                         document.addeventlistener('click',this.documentclickhandler, false);                     }                 }             }      },     listeners: [         {             delegate: "#control-segment-button",             event: 'toggle',             fn: 'onsegmenttoggled'         }             ],     initialize: function () {         //ext.require("");         var segmentedbutton = ext.create('ext.segmentedbutton', {             layout: {                 type: 'hbox',                 pack: 'center',                 align: 'stretchmax'             },             docked: 'bottom',             id:'control-segment-button',             allowmultiple: false,             allowdepress: true,             config: { flex: 1 },             items: [                 {                     iconcls: 'time',                     width: '50%',                     cls:'palin-segment',                     style:"border-radius:0px"                 },                 {                     iconcls: 'settings',                     width: '50%',                     cls: 'palin-segment',                     style: "border-radius:0px"                 }             ]         });         this.add(segmentedbutton);      }  }); 

event.preventdefault(); keeps framework or document handling event.


Comments

Popular posts from this blog

c# - How to get the current UAC mode -

postgresql - Lazarus + Postgres: incomplete startup packet -

angularjs - ng-repeat duplicating items after page reload -