In my lightning component, I have a table with column that has a menu in it. The menu items are for edit and delete. I'm trying to find a way to get the row that was clicked on and so far everything thing I've found/tried hasn't worked. This is in a Summer 16 sandbox w/Locker Service enabled. These approaches no longer work: - http://salesforce.stackexchange.com/questions/55310/how-to-remove-items-from-a-dynamic-list-in-lightning-component - http://bobbuzzard.blogspot.com/2016/01/freezing-users-with-lightning-components.html Here is the top level component: <aura:component implements="flexipage:availableForAllPageTypes,force:appHostable,force:hasRecordId"> <c:AffiliationsList curRecordId="{!v.recordId}" /> <c:AffiliationDetails /> </aura:component> Here is the component that has the datagrid: <aura:component implements="flexipage:availableForAllPageTypes,force:appHostable" controller="AffiliationController"> <ltng:require styles="/resource/SLDS103/assets/styles/salesforce-lightning-design-system-ltng.min.css"/> <aura:attribute name="curRecordId" type="String"/> <aura:attribute name="afList" type="AffiliationWrapper[]"/> <aura:attribute name="numAf" type="Integer" default="0"/> <aura:handler name="init" value="{!this}" action="{!c.doInit}"/> <aura:registerEvent name="appEvent" type="c:affiliationToEdit"/> <div class="slds"> <div class="slds-card"> <div class="slds-card__header slds-grid"> <div class="slds-media slds-media--center slds-has-flexi-truncate"> <div class="slds-media__figure"> <c:svg class="slds-icon slds-icon-standard-contact slds-icon--small" xlinkHref="/resource/SLDS103/assets/icons/standard-sprite/svg/symbols.svg#contact"/> </div> <div class="slds-media__body"> <h2 class="slds-text-heading--small slds-truncate">Affiliations ({!v.numAf})</h2> </div> </div> </div> <div class="slds-card__body"> <table class="slds-table slds-table--bordered slds-table--striped slds-max-medium-table--stacked-horizontal"> <thead> <tr class="slds-text-heading--label"> <th class="slds-is-sortable" scope="col"> <div class="slds-truncate">Relationship <button class="slds-button slds-button--icon-bare"> <c:svg class="slds-button__icon slds-button__icon--small" xlinkHref="/resource/SLDS103/assets/icons/utility-sprite/svg/symbols.svg#arrowdown"/> <span class="slds-assistive-text">Relationship</span> </button> </div> </th> <th class="slds-is-sortable" scope="col"> <div class="slds-truncate">Status <button class="slds-button slds-button--icon-bare"> <c:svg class="slds-button__icon slds-button__icon--small" xlinkHref="/resource/SLDS103/assets/icons/utility-sprite/svg/symbols.svg#arrowdown"/> <span class="slds-assistive-text">Status</span> </button> </div> </th> <th class="slds-is-sortable" scope="col"> <div class="slds-truncate">Project <button class="slds-button slds-button--icon-bare"> <c:svg class="slds-button__icon slds-button__icon--small" xlinkHref="/resource/SLDS103/assets/icons/utility-sprite/svg/symbols.svg#arrowdown"/> <span class="slds-assistive-text">Project</span> </button> </div> </th> <th class="slds-is-sortable" scope="col"> <div class="slds-truncate">Sub-Project <button class="slds-button slds-button--icon-bare"> <c:svg class="slds-button__icon slds-button__icon--small" xlinkHref="/resource/SLDS103/assets/icons/utility-sprite/svg/symbols.svg#arrowdown"/> <span class="slds-assistive-text">Sub-Project</span> </button> </div> </th> <th class="slds-is-sortable" scope="col"> <div class="slds-truncate">Task <button class="slds-button slds-button--icon-bare"> <c:svg class="slds-button__icon slds-button__icon--small" xlinkHref="/resource/SLDS103/assets/icons/utility-sprite/svg/symbols.svg#arrowdown"/> <span class="slds-assistive-text">Task</span> </button> </div> </th> <th class="slds-is-sortable" scope="col"> <div class="slds-truncate">Notes <button class="slds-button slds-button--icon-bare"> <c:svg class="slds-button__icon slds-button__icon--small" xlinkHref="/resource/SLDS103/assets/icons/utility-sprite/svg/symbols.svg#arrowdown"/> <span class="slds-assistive-text">Notes</span> </button> </div> </th> <th class="slds-cell-shrink"></th> </tr> </thead> <tbody> <aura:iteration items="{!v.afList}" var="af" indexVar="idx"> <tr class="slds-hint-parent slds-has-flexi-truncate" id="{!idx}"> <td class="slds-truncate slds-cell-wrap" data-label="Relationship">{!af.relationship}</td> <td class="slds-truncate" data-label="Status">{!af.status}</td> <td class="slds-truncate slds-cell-wrap" data-label="Project"> <a >{!af.project}</a> </td> <td class="slds-truncate slds-cell-wrap" data-label="Sub-Project">{!af.subProject}</td> <td class="slds-truncate slds-cell-wrap" data-label="Task">{!af.task}</td> <td class="slds-truncate slds-cell-wrap" data-label="Notes">{!af.note}</td> <td class="slds-cell-shrink" data-label="Actions"> <ui:button aura:id="edit" label="Edit" press="{!c.editAffiliation}"/> <!-- <ui:menu> <ui:menuTriggerLink aura:id="trigger" title="more"/> <ui:menuList class="actionMenu" aura:id="actionMenu"> <ui:actionMenuItem aura:id="edit" label="Edit" click="{!c.editAffiliation}"/> <ui:actionMenuItem aura:id="delete" label="Delete" click="{!c.deleteAffiliation}"/> </ui:menuList> </ui:menu> --> </td> </tr> </aura:iteration> </tbody> </table> </div> </div> </div> </aura:component> Here is the controller: ({ doInit : function(component, event, helper) { helper.loadAffiliations(component, event); }, editAffiliation : function(component, event, helper) { helper.editRecord(component, event); } }) Here is the helper: ({ loadAffiliations : function(cmp, ev) { var action = cmp.get("c.getAffiliations"); action.setParams({ "currentId": cmp.get("v.curRecordId") }); action.setCallback(this, function(response) { var state = response.getState(); if(state === "SUCCESS") { var affiliations = response.getReturnValue(); cmp.set('v.numAf', affiliations.length); cmp.set('v.afList', affiliations); } else if (state === "ERROR") { console.log('errors', response.getError()); } }); $A.enqueueAction(action); }, editRecord : function(cmp, ev) { var row = cmp.getEvent("editAffiliation"); console.log('row', row); } }) console.log('row', row); logs out as null. Originally my approach was just to pull the indexVar and then I'd be set but that's when I started finding out that none of the old ways worked anymore. In my function, I'm thinking I should be able to get the value via `getSource()` on the event, but so far I haven't been able to figure out what, if any, key holds that value. It seems there should be a way to get to the `dataset`. Is there anyway to get the value for `data-index` from the event? It appears that the Locker Service has blocked everything. Or is there another approach that would work better? Any suggestions?