2017-12-18 177 views
-1

我在Magento 2使用jQuery和我有以下代码:jQuery的DOM元素不是之后页面加载定义? (Magento的2)

require(["jquery"], function($) { 
    var productCarousel = $('.product-carousel-slideshow'); 
    console.log(productCarousel); 
} 

元素日志按预期控制台,但是一旦页面加载,我不能做任何事元素,如果我在它没有定义控制台输入productCarousel,这是什么原因?

+1

欢迎堆栈溢出!请把[旅游]看看周围,并通过[帮助]阅读,特别是[*如何我问一个很好的问题?*](/帮助/如何对问)*“一旦页面加载的,我不能做的任何元素“*告诉我们在哪儿,你是如何想用它做什么。 *“如果我在控制台输入productCarousel没有定义” *当然不是,这不是一个全球性的,它是一个局部范围的** **仅向'require'回调。如果您在该功能中的某个断点处暂停,您可以从控制台访问它,但不能以其他方式访问它。 –

回答

0

的productCarousel在本地定义为需要回调,只要将定义全球,你将能够在加载后对其进行访问。

0

如果您正在重写magento模块,那么您可以在文件Path中简单更改路径app/design/frontend /供应商名称/主题名称/模块名称/ requirejs-config.js。如果您已经创建自定义模块,然后应用程序/代码/供应商名称/自定义模块/视图/前端/ requirejs-config.js

var config = { 
    paths: {    
    'Owlcarousel' : 'VendorName_ModuleName/js/owl.carousel.min'  
    }, 
    shim: { 
    'Owlcarousel': { 
     deps: ['jquery'] 
    } 
    } 
} 

的脚本PHTML:

<script> 
    require([ 
     'jquery', 
     'Owlcarousel' 
    ], function ($, Owlcarousel) { 
     $('#.product-carousel-slideshow-<?php echo $productsliderId;?>').owlCarousel(<?php echo ($block->getAllOptions())?>); 
    }); 

相关问题