如何将这些常用的javascript代码转换为插件
How do I turn this commonly used javascript code into a plugin?
概述
我正在开发一个基于Wordpress的网站,允许访问者在页面上的几个不同位置上传图像。我(经过大量的尝试和错误)得到了一些工作代码,但由于每个"上传"区域的代码只略有不同,我想尝试以"插件"的形式使其可重复使用。
我的背景
我是一个自学成才的程序员,所以我很容易犯很多错误,用完全不合逻辑的方式做事,再加上写一千行代码,而一行就足够了。
问题历史记录(请跳过此部分查看下面的代码)
我想我会加入一些历史,这样我就不会触犯X-Y问题。我在网页上有4个地方,访问者可以上传到网站。其中3个是图像上传,应该允许访问者也"裁剪"图像。我使用jQuery插件plupload和jcrop来提供功能。
最初,我试图以这样一种方式编写代码,即页面在执行时将相关代码包含在DOM中。为了在同一页面上有多个plupload实例,我创建了一个"动态变量",然后调用这样的代码。。。
var dynamicPartOfVar = "imageUploadAreaOne";
imageManipulationObject["imageUploader"+dynamicPartOfVar] = new plupload.Uploader(plupload_init);
这(在某种程度上)起了作用,但我发现,如果代码在DOM中,那么浏览器就不会缓存它。因此,我为每个上传区域创建了一个单独的js文件,并"包括"它们,并用传递相关变量
wp_localize_script("imageUploadAreaOne", "inputVar", $relevantVariableArray);
wp_enqueue_script("imageUploadAreaOne");
然而,我很快意识到,如果我可以将不同的变量"传入"同一个文件,我就可以只生成一组代码,并(例如)传递一个名为"allowCropping"的变量,该变量将启用/禁用jCrop等。
问题
我有这样的代码(只是一个例子):
var isAdmin = inputVar.isAdmin;
var notAdmin = inputVar.notAdmin;
var thisUser = inputVar.thisUser;
var ajaxurl = inputVar.ajaxurl;
imageManipulationObject["imageUploader"+dynamicPartOfVar] = new plupload.Uploader(plupload_init);
imageManipulationObject["ProgressLoader"+dynamicPartOfVar] = $('#ProgressLoader'+dynamicPartOfVar).percentageLoader({width: 170, height: 170, progress:0.0});
/* **************************** */
// HIDE CROPPING DIV WHEN USER SELECTS A DIFFERENT IMAGE
/* **************************** */
$('.imageSelection').on('click', function() {
closeCropWindow();
});
$('.imageThumb').on('click', function() {
closeCropWindow();
});
HTML示例
<div id="mainCropDivID<?php echo $this->dynamicPartOfVar; ?>">
<div class="outerCropDiv">
<div id="innerCropDivID<?php echo $this->dynamicPartOfVar; ?>" class="innerCropDiv">
<img class="croppingImage" id="croppingImageID<?php echo $this->dynamicPartOfVar; ?>" alt="Cropping Image" src="<?php echo $currentURL; ?>"/>
<div class="JTcentreDiv">
<form id="cropimg<?php echo $this->dynamicPartOfVar; ?>" name="cropimg" method="post" action="<?php echo $getPartOfURL; ?>">
<input type="hidden" id="x_<?php echo $this->dynamicPartOfVar; ?>" name="x">
<input type="hidden" id="y_<?php echo $this->dynamicPartOfVar; ?>" name="y">
<input type="hidden" id="w_<?php echo $this->dynamicPartOfVar; ?>" name="w">
<input type="hidden" id="h_<?php echo $this->dynamicPartOfVar; ?>" name="h">
<input type="hidden" name="typeOfImage" value="<?php echo $this->typeOfImage; ?>">
<input type="hidden" id="imageIDtoCrop<?php echo $this->dynamicPartOfVar; ?>" name="imageIDtoCrop" value="">
<input id="performCropButton<?php echo $this->dynamicPartOfVar; ?>" type="submit" value="Crop Image">
</form>
</div>
</div><!-- @end #innerCropDivID -->
</div><!-- @end .outerCropDiv -->
<div style="clear:both;"> </div>
</div> <!-- @end #mainCropDivID -->
假设将这一切封装在一个"插件"中是可行的。我该怎么做呢?我希望能够将包含多个DOM元素的变量传递到插件中(即,我希望将保存需要裁剪的图像的div、保存图像预览的div、存储当前上传图像的div等)。加上其他变量,例如是否允许"裁剪"。
谢谢你的帮助。
您需要创建一个新的JS文件(它将成为您的插件)这需要的代码是
(function ($) {
$.fn.myFunctionPlugin= function (options) {
var defaults = {
};
var settings = $.extend(true, {}, defaults, options);
}
function dosomthing()
{
//CODE HERE
}
} (jQuery));
在你的页面上添加对插件的引用(就像你添加对jquery或任何其他第三方js的引用一样)
<script src="...Reference" type="text/javascript"></script>
在同一页面上添加另一个脚本段
<script type="text/javascript">
$(function() {
var options = {actionToPerform:"...",//This may be a controller action performed
idcalss="....." //Class of the item on the view you want to pass in}
$('.someclass').jsFunction(options);
});
附言:请参阅《JQuery in action》一书,第二版,第205页
一个简单的jquery插件编写参考:jquery插件示例
- 云代码(javascript)失败,原因是:{代码:1,消息:内部错误
- 简化此If语句,使其不会't重复代码-Javascript
- 十进制到二进制代码Javascript
- 第二次单击时执行不同的代码(JavaScript)
- 在不使用jquery($symbol)knockout.js的情况下分离代码javascript
- 缩短几个元素的onclick代码 - JavaScript
- 英国银行排序代码 JavaScript 正则表达式
- 我无法在谷歌图表的代码 javascript 中获取 json 数据(项目 Python Hello Dashboard
- 和代码 JavaScript 没有被 &.
- 我怎样才能减少这段代码 javascript 代码,这样它就不会那么重复了
- 我想单击一个按钮,一次只执行已经制作的程序中的一行代码.(JavaScript)
- 滑动 DIV 代码 Javascript 的小问题
- 尝试重写代码 JavaScript
- 是否可以检测到在不使用键代码 javascript 的情况下按下了输入键
- 输入网址代码 JavaScript 播放器
- 管理通用客户端代码(javascript/css)
- 理解代码javascript
- 加载json-url参数代码(javascript修改)
- 变量检查错误的代码(javascript)
- css属性仅由代码javascript应用