【发布时间】:2017-11-13 22:28:33
【问题描述】:
我正在尝试在我的反应应用程序中使用 jquery 插件。每次我尝试使用一些 jquery 第三方插件时,都会收到一条错误消息,提示 $(...).somePlugin not a function。目前我正在尝试使用 ionRangeSlider。它给了我错误
Uncaught TypeError: (0 , _jquery2.default)(...).ionRangeSlider is not a function
js文件
import $ from 'jquery'
import 'bootstrap-tagsinput'
class AddTagSection extends Component {
componentDidMount=()=> {
this.slider = $(this.inputSlider).ionRangeSlider();
}
<div className="irs-wrapper">
<input type="text" ref={node=>this.inputSlider=node} className='input-slider' id="ionSlider-newTag" name="ionSlider"/>
</div>
下面是 ionRangeSlider.js(插件)中调用的函数
$.fn.ionRangeSlider = function (options) {
return this.each(function() {
if (!$.data(this, "ionRangeSlider")) {
$.data(this, "ionRangeSlider", new IonRangeSlider(this, options, plugin_count++));
}
});
};
据我在网上阅读,这是一个多 jquery 冲突问题。
关于我的应用程序:我的项目通过 npm 安装了 jquery。所以 package.json 中有一个 jquery。我还在 index.jade 文件的脚本中包含了 jquery。所以那里还有一个。
这不是将 jquery 放在插件的 js 文件之后的问题。我将 jquery 放在 index.jade 文件脚本的顶部。
block head_scripts
script(src='https://code.jquery.com/jquery-3.2.1.min.js')
script(src='/public/ion.rangeSlider.js')
link(href='/public/normalize.css' rel="stylesheet")
link(href='/public/ion.rangeSlider.css' rel="stylesheet")
link(href='/public/ion.rangeSlider.skinFlat.css' rel='stylesheet')
我也试过 noConfilct。但这也没有用。
var $ = jQuery.noConflict();
$( ".slider" ).ionRangeSlider();
我尝试在我的 webpack config.js 文件中包含 jquery
new webpack.ProvidePlugin({
React: 'react',
$: 'jquery',
jQuery: 'jquery'
}),
以上没有任何效果。每次我得到同样的错误。
我该如何解决这个问题?
【问题讨论】:
-
看起来你只包含了 IonRangeSlider CSS 文件,而不是 JS
-
不,我已经包含了它。
-
@RoryMcCrossan 还有什么你认为我遗漏或做错了吗?
标签: javascript jquery node.js reactjs jquery-plugins