jQuery功能重复.我怎么能把这个短一点
jQuery function duplication. How can I make this shorter?
您可以在此处查看页面:http://jsfiddle.net/7JhjN/
基本上,有很多重复,我不喜欢这样。我确信有些地方出了问题,因为它不是一个正确的编程逻辑。
如何缩短此函数?
系统的工作方式如下:1.有6个选择框。(选项值相同)2.输出有6个div。3.每当选择框值发生更改时,目标div中的图像就会发生更改。
这个怎么样:
HTML:
<select class='item_early' name="item_early1" data-id="1"><option value="0"></option></select>
<select class='item_early' name="item_early2" data-id="2"> <option value="0"></option></select>
<select class='item_early' name="item_early3" data-id="3"> <option value="0"></option></select>
<select class='item_early' name="item_early4" data-id="4"> <option value="0"></option></select>
<div id="result_item_early1"></div>
<div id="result_item_early2"></div>
<div id="result_item_early3"></div>
<div id="result_item_early4"></div>
Javascript:
$('.item_early').change( function() {
var value = $(this).val();
var id = $(this).data('id');
$('#result_item_early'+id).html('<img src="http://www.sobafire.com/themes/default/images/loading.gif">');
$('#result_item_early'+id).load('http://www.sobafire.com/ajax.php?ajaxType=ITEM&itemID=' + value);
});
你的问题是,你有这样的东西:
$('#item_early1').change( function() {
var value = $(this).val();
//directly set loading value as html
$('#result_item_early1').html('<img src="http://www.sobafire.com/themes/default/images/loading.gif">');
//change image url source from server (expected return value is something like <img src="" />
$('#result_item_early1').load('http://www.sobafire.com/ajax.php?ajaxType=ITEM&itemID=' + value);
});
你重复不同的常数。
答案是用这样的变量名替换常量,然后将其放入函数中:
function doit(itemID,resultID) {
$(itemID).change( function() {
var value = $(this).val();
//directly set loading value as html
$(resultID).html('<img src="http://www.sobafire.com/themes/default/images/loading.gif">');
//change image url source from server (expected return value is something like <img src="" />
$(resultID).load('http://www.sobafire.com/ajax.php?ajaxType=ITEM&itemID=' + value);
});
}
然后为所有常量调用该函数:
doit('#item_early1','#result_item_early1');
doit('#item_early2','#result_item_early2');
doit('#item_early3','#result_item_early3');
doit('#item_early4','#result_item_early4');
doit('#item_early5','#result_item_early5');
doit('#item_early6','#result_item_early6');
您可以通过使用带有属性选择器的starts来简化代码。
$('select[name^="item_early"]').change( function() {
var $this = $(this);
var value = $this.val();
var $resultDiv = $('#result_' + $this.attr('name'));
//directly set loading value as html
$resultDiv.html('<img src="http://www.sobafire.com/themes/default/images/loading.gif">');
//change image url source from server (expected return value is something like <img src="" />
$resultDiv.load('http://www.sobafire.com/ajax.php?ajaxType=ITEM&itemID=' + value);
});
工作演示
相关文章:
- 添加文字和评论功能更新Div
- JavaScript打印功能使日历停止工作
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 如何做到这一点,使代码在不传递条件后执行函数
- 一点javascript元编程&可链接的设置器
- 如何防止网页加载后自动启动功能
- 除修剪外的其他功能
- 悬停功能触发器
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 删除CKEditor工具栏按钮,但不删除功能
- 异步facebook功能
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- jQuery滚动功能只工作一次
- Graphiti中是否有任何工具提示功能
- React redux初始化功能,无论状态变化如何
- 在哪里可以学习ECMAScript标准中尚未包含的JavaScript功能
- 谷歌地图spiderfly功能-在同一点上有多个标记
- 卡住了写一点折扣功能
- jQuery功能重复.我怎么能把这个短一点
- jquery -切换点击功能,不工作在单一点击.但它可以在双击