I am trying to get the element id during scan barcode sku event, and get element according to data-sku in the li which added dynamically under UL which loads from another function on load of page.
I tried many ways as guided but it looks i am missing some thing due to which i am unable to get desired result, following what i am trying is the last looks more relative.
Data i have in UL added dynamically in another function on load
<div class="inside" id="grid_layout_cycle" data-offset="0" data-parent="0" style="height: 382px;"> <ul> <li id="product_1886" class="title_product add_grid_tile category_cycle" data-sku="ORD_1879_1886" data-id="1886" data-root-category="[undefined]" title="_1879" style="background-image: url("https://impaktt.techchef.org/wp-content/themes/the-hanger/images/placeholder.png");"><span>_1879</span><span class="price">Free!</span></li> <li id="product_4538" class="title_product add_grid_tile category_cycle" data-sku="ORD_2604_4538" data-id="4538" data-root-category="[undefined]" title="_2604" style="background-image: url("https://impaktt.techchef.org/wp-content/themes/the-hanger/images/placeholder.png");"><span>_2604</span><span class="price">Free!</span></li> <li id="product_4051" class="title_product add_grid_tile category_cycle" data-sku="ORD_3932_4051" data-id="4051" data-root-category="[undefined]" title="_3932" style="background-image: url("https://impaktt.techchef.org/wp-content/themes/the-hanger/images/placeholder.png");"><span>_3932</span><span class="price">Free!</span></li> </ul>
Lastly i have called following script to select element from data-sku=”ORD_3932_4051″ and log it into the console
var tempProductScan = $("#grid_layout_cycle ul").find("[data-sku='ORD_3932_4051']"); console.log(tempProductScan);
I got the below result in the log (its not complete array but a overview to understand),which seems not as it should be
0: <li id="product_4051" class="title_product add_grid_tile category_cycle" data-sku="ORD_3932_4051" data-id="4051" data-root-category="[undefined]" title="_3932" style="background-image: url("ages/placeholder.png");"> context: HTMLDocument https://impaktt.techchef.org/point-of-sale/main-outlet/testing-new/# length: 1 prevObject: Object { 0: ul, selector: "#grid_layout_cycle ul", length: 1, … } selector: "#grid_layout_cycle ul [data-sku='ORD_3932_4051']" <prototype>: Object { jquery: "1.12.4", constructor: n(a, b), length: 0, … }
And finally when i am trying to fetch id from this it does shows undefined
Please Note: When i am only calling UL elements as below it gives all element in child nodes.
var tempProductScanParent = $("#grid_layout_cycle").find('ul'); console.log(tempProductScanParent);
result for above i got in firefox is as below (its not complete as its large but to give you an idea)
{…} 0: ul accessKey: "" accessKeyLabel: "" accessibleNode: AccessibleNode { computedRole: "list", states: (4) […], attributes: (9) […], … } assignedSlot: null attributes: NamedNodeMap [] baseURI: "https://impaktt.techchef.org/point-of-sale/main-outlet/testing-new/#" childElementCount: 50 childNodes: NodeList(50) [ li#product_1886.title_product.add_grid_tile.category_cycle, li#product_4538.title_product.add_grid_tile.category_cycle, li#product_4051.title_product.add_grid_tile.category_cycle , … ] children: HTMLCollection { 0: li#product_1886.title_product.add_grid_tile.category_cycle, 1: li#product_4538.title_product.add_grid_tile.category_cycle, 2: li#product_4051.title_product.add_grid_tile.category_cycle , … } classList: DOMTokenList [...
The complete snippet you can see below:
var tempProductScan = $("#grid_layout_cycle ul").find("[data-sku='ORD_3932_4051']"); console.log(tempProductScan); var tempProductScanParent = $("#grid_layout_cycle").find('ul'); console.log(tempProductScanParent);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <div class="inside" id="grid_layout_cycle" data-offset="0" data-parent="0" style="height: 382px;"> <ul> <li id="product_1886" class="title_product add_grid_tile category_cycle" data-sku="ORD_1879_1886" data-id="1886" data-root-category="[undefined]" title="_1879" style="background-image: url("https://impaktt.techchef.org/wp-content/themes/the-hanger/images/placeholder.png");"><span>_1879</span><span class="price">Free!</span></li> <li id="product_4538" class="title_product add_grid_tile category_cycle" data-sku="ORD_2604_4538" data-id="4538" data-root-category="[undefined]" title="_2604" style="background-image: url("https://impaktt.techchef.org/wp-content/themes/the-hanger/images/placeholder.png");"><span>_2604</span><span class="price">Free!</span></li> <li id="product_4051" class="title_product add_grid_tile category_cycle" data-sku="ORD_3932_4051" data-id="4051" data-root-category="[undefined]" title="_3932" style="background-image: url("https://impaktt.techchef.org/wp-content/themes/the-hanger/images/placeholder.png");"><span>_3932</span><span class="price">Free!</span></li> </ul>
Applied Changes as specified in comment I tried following with children()
var tempProductScan = $("#grid_layout_cycle ul"); console.log($(tempProductScan[0]).children());
it gives following nodes but not selecting specific element by data-sku https://i.ibb.co/JtpW0q7/image.png
i am curious if there is a way to get the element from the array or object by key after finding specific data-sku of it
Solution Found
As Mr @uingtea guided that , find the right selector via inspect element so i did that, and found it was mistake in the selector i used double quotes in inspect element and then apply same in script and it works.
var tempProductScan = $('#grid_layout_cycle ul li[data-sku="testing"]'); var SKU_ScanId = tempProductScan[0].id; alert(theID);
Advertisement
Answer
.find()
return array []
you need to define the index
var tempProductScan = $("#grid_layout_cycle ul").find("[data-sku='ORD_3932_4051']"); var theID = tempProductScan[0].id; console.log(theID);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <div class="inside" id="grid_layout_cycle" data-offset="0" data-parent="0" style="height: 382px;"> <ul> <li id="product_1886" class="title_product add_grid_tile category_cycle" data-sku="ORD_1879_1886" data-id="1886" data-root-category="[undefined]" title="_1879" style="background-image: url("https://impaktt.techchef.org/wp-content/themes/the-hanger/images/placeholder.png");"><span>_1879</span><span class="price">Free!</span></li> <li id="product_4538" class="title_product add_grid_tile category_cycle" data-sku="ORD_2604_4538" data-id="4538" data-root-category="[undefined]" title="_2604" style="background-image: url("https://impaktt.techchef.org/wp-content/themes/the-hanger/images/placeholder.png");"><span>_2604</span><span class="price">Free!</span></li> <li id="product_4051" class="title_product add_grid_tile category_cycle" data-sku="ORD_3932_4051" data-id="4051" data-root-category="[undefined]" title="_3932" style="background-image: url("https://impaktt.techchef.org/wp-content/themes/the-hanger/images/placeholder.png");"><span>_3932</span><span class="price">Free!</span></li> </ul>