Stash your gear in style. We’ve got men’s bags and backpacks in all shapes and sizes for all of your occasions. Hit the gym, school, or the town with on-point hauling gear from a range of high-heat brands like Nike, The North Face, Herschel and more. Whether you’re looking for something small like a TNF Bozer Hip Pack or a carry-all duffel bag for traveling and commuting — we’ve got it right here. And what better way to flex than with a brand new bag from JD Sports Canada?
Featured Collections
Duffel Bags Fannypacks Crossbody Bags Men's Accessories All Men's All Women's All Kids'
`; }, collapseButtonText: ({ collapsed }) => collapsed ? "+" : "-", }, cssClasses: { root: "refinement-group__panel--root", body: "refinement-group__panel", header: "refinement-group__panel--header", collapsedRoot: "refinement-group__collapsed", collapseButton: "refinement-group__panel--collapse custom-collapse" } })(instantsearch.widgets.refinementList); cache.client.addWidget(panel({ container: filterContainerIds[filter.id], attribute: filter.attributeName, sortBy: [filter.sortBy], limit: filter.limit || 24, showMore: true, showMoreLimit: 100, templates: { item: (item) => { if(DynamicYield) { if(item.isRefined && document.querySelector(`[data-filter-value="${item.value}"]`)) { if(selected_filters.indexOf(item.value) == -1) { selected_filters.push(item.value); var type = document.querySelector(`[data-filter-value="${item.value}"]`).getAttribute("data-filter-attribute"); DynamicYield.filterItems(type, item.value); } } else if(selected_filters.indexOf(item.value) > -1) { selected_filters.splice(selected_filters.indexOf(item.value), 1); } } if (filter.isColour) { return ` `; } else if (filter.isSize) { return ` `; } else if (filter.isPrice) { return ` `; } else if (filter.isBrand) { return ` `; } else if (filter.id === 'named_tags_Discount Amount') { return ` ` } else { return ` ` } }, }, cssClasses: { root: "refinement-group", body: "refinement-group__body", list: "refinement-group__body", footer: "refinement-group__footer", item: "refinement-group__item", selectedItem: "refinement-group__item--active", disabledShowMore: "hidden" }, transformItems(items) { if (filter.isColour) { items = items.filter((item) => item.value.toLowerCase() !== "n/a"); } if (filter.isPrice) { return formatPriceRefinements(items); } else if (filter.isSize) { return formatSizeRefinements(items); } else if (filter.sortBy === "name:asc") { return sortRefinementsAlphabetically(items, true); } else if (filter.sortBy === "name:desc") { return sortRefinementsAlphabetically(items, false); } return items; } })); }); var matches = window.location.pathname.match(/\/collections\/([^/]+)/i); collectionHandle = Boolean(matches) && matches.length === 2 ? matches[1] : null; let collectionFacetFilter; /*if (algolia.config.collection_id_indexing) { collectionFacetFilter = algolia.current_collection_id ? 'collection_ids:"' + algolia.current_collection_id + '"' : null; } else {*/ collectionFacetFilter = collectionHandle ? 'collections:"' + collectionHandle + '"' : null; //} if(collectionFacetFilter) { // Add the collection filter to the list of search filters searchFilters.push(collectionFacetFilter); } const collectionRulesContextValue = algolia.config.collection_id_query_rules ? algolia.current_collection_id : collectionHandle; const analyticsTags = collectionRulesContextValue ? [collectionRulesContextValue] : []; if(window.location.pathname === '/search') { analyticsTags.push('search'); } else { analyticsTags.push('collection'); } const getDeviceType = () => { const ua = navigator.userAgent; if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua)) { return "tablet"; } if ( /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test( ua ) ) { return "mobile"; } return "desktop"; }; analyticsTags.push(getDeviceType()); // Filters for stock policy var stockPolicyFilter = null; if (algolia.config.stock_policy) { if (algolia.config.stock_policy === 'allow') { /** * For 'allow', we don't need to add any filter as we want to continue * displaying all out of stock items. */ } else if (algolia.config.stock_policy === 'deny') { // For 'deny' we will filter out all items based on inventory quantity stockPolicyFilter = 'inventory_quantity > 0'; } else if (algolia.config.stock_policy === 'continue') { /** * For 'continue' we will filter on `inventory_available` attribute whose * value is dependent on: * `inventory_quantity > 0 OR inventory_policy == 'continue'` */ stockPolicyFilter = 'inventory_available:true'; } // Add the stock policy filter to the list of search filters if (stockPolicyFilter) { searchFilters.push(stockPolicyFilter); } } const activeSortOrders = collectionPageEnabled && algolia.collectionSortOrders ? algolia.collectionSortOrders : algolia.sortOrders; // Define all Algolia widgets to be initialized cache.client.addWidgets([ instantsearch.widgets.currentRefinements({ container: "#algolia-current-filters", cssClasses: { list: "current-filters__list", label: "hidden", category: "current-filters__item", categoryLabel: "current-filters__item--label", delete: ["current-filters__delete", "naked-link"] }, transformItems(items) { return items.map((item) => { if (item.attribute === "price_range") { return { ...item, refinements: formatPriceRefinements(item.refinements)} } else if (item.attribute === 'named_tags.Discount Amount') { return { ...item, refinements: item.refinements.map(r => { return { ...r, label: `${Math.round(r.label * 100)}% off` } }), }; } return item; }); } }), instantsearch.widgets.clearRefinements({ container: "#algolia-clear-all", templates: { resetLabel: "Clear All", }, cssClasses: { button: "text-link" } }), instantsearch.widgets.sortBy({ container: "#algolia-sort-by", items: algoliaSortIndices, cssClasses: { select: "algolia-sort-by__select", }, }), instantsearch.widgets.configure({ hitsPerPage: collectionPageEnabled && algolia.config.collections_full_results_hits_per_page ? algolia.config.collections_full_results_hits_per_page : algolia.config.products_full_results_hits_per_page, distinct: true, clickAnalytics: true, enablePersonalization: false, userToken: localStorage.getItem("algolia_user_token"), analyticsTags, filters: 'collections:mens-bags-backpacks',}) ]); if(cache.type == "search") { // Hidden SearchBox widget that is used to update the results based on the url query parameter const customSearchBox = instantsearch.connectors.connectSearchBox(function(SearchBoxRenderingOptions, isFirstRendering) { if (isFirstRendering) { const query = new URL(window.location.href).searchParams.get("query"); if (query) { SearchBoxRenderingOptions.refine(query); document.querySelector("[data-search-results-title]").innerHTML = `Search Results For: ${query}`; } } if (SearchBoxRenderingOptions.query) { document.querySelector("[data-search-results-title]").innerHTML = `Search Results For: ${SearchBoxRenderingOptions.query}`; } }); cache.client.addWidget( customSearchBox({ containerNode: $('#algolia-search-box'), }) ); } // Mobile custom sort-by widget that uses radio inputs instead of a select element (Mobile Only) const customSortBySelector = instantsearch.connectors.connectSortBy(function(SortBySelectorRenderingOptions, isFirstRendering) { if (isFirstRendering) { SortBySelectorRenderingOptions.widgetParams.container.html(''); SortBySelectorRenderingOptions.widgetParams.container .find('div') .on('change', function(event) { const newSortOption = SortBySelectorRenderingOptions.options.find((option) => option.value === event.target.value); document.querySelector("[data-open-sorting-text]").innerHTML = `Sort by: ${newSortOption.label}`; SortBySelectorRenderingOptions.refine(event.target.value); closeMobileSorting(); }); } const optionsHTML = SortBySelectorRenderingOptions.options.map(function(option) { return `
`; }); SortBySelectorRenderingOptions.widgetParams.container .find('div') .html(optionsHTML); }); cache.client.addWidget( customSortBySelector({ container: $('#algolia-sort-by-mobile'), items: algoliaSortIndices, }) ); // Custom Pagination widget that uses a select element instead of individual page buttons const customPagination = instantsearch.connectors.connectPagination(function(PaginationRenderingOptions, isFirstRendering) { const currentPage = PaginationRenderingOptions.currentRefinement; PaginationRenderingOptions.widgetParams.containerNode.html(`
Hobby: LARPing, Kitesurfing, Sewing, Digital arts, Sand art, Gardening, Dance
Introduction: My name is Amb. Frankie Simonis, I am a hilarious, enchanting, energetic, cooperative, innocent, cute, joyous person who loves writing and wants to share my knowledge and understanding with you.
We notice you're using an ad blocker
Without advertising income, we can't keep making this site awesome for you.