两个jquery插件,第二个不工作
Two jquery pluggin, the second to not work
我有一个简单的html文件,带有一个标题和两个空的div
<h1>Blablabla.</h1>
<div id="div1"></div>
<div id="div2"></div>
这两个div必须填充一些由jquery SVG库(由Keith Wood开发)生成的SVG包含。对于那个标题,我包含了这些脚本
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript" src="./jquery.svg.package-1.4.5/jquery.svg.js"></script>
<script type="text/javascript" src="./myscript.svg.js"></script>
然后看看 myscript.svg.js,它是一个 jquery 代码,它的 ready 函数将 plugin1 附加到div1,插件 2 附加到div2,并调用 publiv 函数 generateSvg
$(document).ready(function(){
$('#div1').plugin1({'param': '5'});
$('#div1').data('plugin1').generateSvg();
$('#div2').plugin2();
$('#div2').data('plugin2').generateSvg();
});
其中插件 1 和插件 2 是根据样板编写的两个 jquery 插件
(function($) {
$.plugin1 = function(element, options) {
var defaults = {
param: '5'
onFoo: function() {}
}
var plugin = this;
plugin.settings = {}
var $element = $(element), element = element;
plugin.init = function() {
plugin.settings = $.extend({}, defaults, options);
}
plugin.generateSvg = function() {
$element.svg();
var svg = $element.svg('get');
var defs = svg.defs();
generate1Svg(svg);
}
var generate1Svg = function(svg) {
... etc ...
}
plugin.init();
}
$.fn.plugin1 = function(options) {
return this.each(function() {
if (undefined == $(this).data('plugin1')) {
var plugin = new $.plugin1(this, options);
$(this).data('plugin1', plugin);
}
});
}
})(jQuery);
(function($) {
$.plugin2 = function(element, options) {
var defaults = {
}
var plugin = this;
plugin.settings = {}
var $element = $(element), element = element;
plugin.init = function() {
plugin.settings = $.extend({}, defaults, options);
alert('coucou');
}
plugin.generateSvg = function() {
alert('toto');
$element.svg();
var svg = $element.svg('get');
var defs = svg.defs();
generate2Svg(svg);
}
var generate2Svg = function(svg) {
... etc ...
}
plugin.init();
}
$.fn.plugin2 = function(options) {
return this.each(function() {
if (undefined == $(this).data('plugin2')) {
var plugin = new $.plugin2(this, options);
$(this).data('plugin2', plugin);
}
});
}
})(jQuery);
我的问题是:插件 1 中编码的 svg 绘图生成良好,但插件 2 中编码的 svg 绘图不会出现。甚至警报消息也不会显示。如果我尝试为div1 和div2 使用 plugin1,它不会在div2 中生成如果我不为div1 调用插件 1 并为div2 调用插件 2,没问题,出现插件 2 中编码的 svg 绘图
javascript 运行时出现语法错误:
resetSize is not defined on line 100.
该语法错误会阻止任何后续代码运行,并且因为它在第一个div 的内容生成结束时有效,但第二个div 的代码无法运行。当您注释掉第一个div 的代码时,您可以停止发生语法错误,并且第二个div 可以正常工作。
相关文章:
- 为什么不'在JQuery中找到第二个css选择器的工作
- 我的设备后退按钮工作不正常,它转到第一个html,但返回到第二个html
- 添加第二个参数时,Javascript函数将停止工作
- 我在一页上有两个简单的javascript幻灯片,但第二个停止了第一个工作
- 单击的第二个项目无法正常工作
- AngularJS,第二个控制器不工作
- Javascript在第二个按钮单击而不是第一个按钮上工作
- 两个jquery插件,第二个不工作
- Ajax 构建关系按钮有效,用于显示引导模式的第二个按钮有效,但两者不能协同工作
- 角度.js第二个控制器不工作
- JSON.stringify()工作不正常-第二个参数消失
- 为什么Flexslider中的一个选择器工作,而第二个选择器不工作;t
- 第二个jQuery加载日期选择器不工作
- 为什么头中包含的第二个js文件工作不正常
- PHP&JavaScript:不工作的第二个脚本
- 点击第二个选项,jquery不会工作,除非我点击页面上的其他任何东西
- 一个脚本阻止第二个脚本工作
- safari表单验证只在第二个按钮点击,但在IE第一次点击本身工作良好
- 第二个动画不工作
- 无法让第二个事件监听器为MVC计数器应用工作