简化一些jQuery代码

罗斯

我有一张地图,单击某个区域时,div与该区域相关的内容会显示在地图下方。为此,它已被简化。

基本上,我对jQuery代码进行了排序,但是它又长又笨拙-我敢肯定,这样做有一种更简单的方法。

http://jsfiddle.net/rupfield23/nBb7g/3/


HTML:

<a href="#" id="sh_north-america">North America Image</a><br>
<a href="#" id="sh_south-america">South America Image</a><br>
<a href="#" id="sh_europe">Europe Image</a><br>
<a href="#" id="sh_africa">Africa Image</a><br>
<a href="#" id="sh_middle-east">Middle East Image</a><br>
<a href="#" id="sh_western-asia">Western Asia Image</a><br>
<a href="#" id="sh_far-east">Far East Image</a><br>
<a href="#" id="sh_australasia">Australasia Image</a>


<div id="list_north-america">North America List</div>
<div id="list_south-america">South America List</div>
<div id="list_europe">Europe List</div>
<div id="list_africa">Africa List</div>
<div id="list_middle-east">Middle East List</div>
<div id="list_western-asia">Western Asia List</div>
<div id="list_far-east">Far East List</div>
<div id="list_australasia">Australasia List</div>


JS:

$('#list_north-america').hide();
$('#list_south-america').hide();
$('#list_europe').hide();
$('#list_africa').hide();
$('#list_middle-east').hide();
$('#list_western-asia').hide();
$('#list_far-east').hide();
$('#list_australasia').hide();



$('#sh_north-america').click(function(e){e.stopPropagation();$('#list_north-america').fadeIn();$('#map').addClass('expand');});
$('#list_north-america').click(function(e){e.stopPropagation();});
$(document).click(function(){$('#list_north-america').fadeOut();$('#map').removeClass('expand');});
$('#sh_south-america').click(function(){$('#list_north-america').fadeOut();});
$('#sh_europe').click(function(){$('#list_north-america').fadeOut();});
$('#sh_africa').click(function(){$('#list_north-america').fadeOut();});
$('#sh_middle-east').click(function(){$('#list_north-america').fadeOut();});
$('#sh_western-asia').click(function(){$('#list_north-america').fadeOut();});
$('#sh_far-east').click(function(){$('#list_north-america').fadeOut();});
$('#sh_australasia').click(function(){$('#list_north-america').fadeOut();});

$('#sh_south-america').click(function(e){e.stopPropagation();$('#list_south-america').fadeIn();$('#map').addClass('expand');});
$('#list_south-america').click(function(e){e.stopPropagation();});
$(document).click(function(){$('#list_south-america').fadeOut();$('#map').removeClass('expand');});
$('#sh_north-america').click(function(){$('#list_south-america').fadeOut();});
$('#sh_europe').click(function(){$('#list_south-america').fadeOut();});
$('#sh_africa').click(function(){$('#list_south-america').fadeOut();});
$('#sh_middle-east').click(function(){$('#list_south-america').fadeOut();});
$('#sh_western-asia').click(function(){$('#list_south-america').fadeOut();});
$('#sh_far-east').click(function(){$('#list_south-america').fadeOut();});
$('#sh_australasia').click(function(){$('#list_south-america').fadeOut();});

$('#sh_europe').click(function(e){e.stopPropagation();$('#list_europe').fadeIn();$('#map').addClass('expand');});
$('#list_europe').click(function(e){e.stopPropagation();});
$(document).click(function(){$('#list_europe').fadeOut();$('#map').removeClass('expand');});
$('#sh_north-america').click(function(){$('#list_europe').fadeOut();});
$('#sh_south-america').click(function(){$('#list_europe').fadeOut();});
$('#sh_africa').click(function(){$('#list_europe').fadeOut();});
$('#sh_middle-east').click(function(){$('#list_europe').fadeOut();});
$('#sh_western-asia').click(function(){$('#list_europe').fadeOut();});
$('#sh_far-east').click(function(){$('#list_europe').fadeOut();});
$('#sh_australasia').click(function(){$('#list_europe').fadeOut();});

$('#sh_africa').click(function(e){e.stopPropagation();$('#list_africa').fadeIn();$('#map').addClass('expand');});
$('#list_africa').click(function(e){e.stopPropagation();});
$(document).click(function(){$('#list_africa').fadeOut();$('#map').removeClass('expand');});
$('#sh_north-america').click(function(){$('#list_africa').fadeOut();});
$('#sh_south-america').click(function(){$('#list_africa').fadeOut();});
$('#sh_europe').click(function(){$('#list_africa').fadeOut();});
$('#sh_middle-east').click(function(){$('#list_africa').fadeOut();});
$('#sh_western-asia').click(function(){$('#list_africa').fadeOut();});
$('#sh_far-east').click(function(){$('#list_africa').fadeOut();});
$('#sh_australasia').click(function(){$('#list_africa').fadeOut();});

$('#sh_middle-east').click(function(e){e.stopPropagation();$('#list_middle-east').fadeIn();$('#map').addClass('expand');});
$('#list_middle-east').click(function(e){e.stopPropagation();});
$(document).click(function(){$('#list_middle-east').fadeOut();$('#map').removeClass('expand');});
$('#sh_north-america').click(function(){$('#list_middle-east').fadeOut();});
$('#sh_south-america').click(function(){$('#list_middle-east').fadeOut();});
$('#sh_europe').click(function(){$('#list_middle-east').fadeOut();});
$('#sh_africa').click(function(){$('#list_middle-east').fadeOut();});
$('#sh_western-asia').click(function(){$('#list_middle-east').fadeOut();});
$('#sh_far-east').click(function(){$('#list_middle-east').fadeOut();});
$('#sh_australasia').click(function(){$('#list_middle-east').fadeOut();});

$('#sh_western-asia').click(function(e){e.stopPropagation();$('#list_western-asia').fadeIn();$('#map').addClass('expand');});
$('#list_western-asia').click(function(e){e.stopPropagation();});
$(document).click(function(){$('#list_western-asia').fadeOut();$('#map').removeClass('expand');});
$('#sh_north-america').click(function(){$('#list_western-asia').fadeOut();});
$('#sh_south-america').click(function(){$('#list_western-asia').fadeOut();});
$('#sh_europe').click(function(){$('#list_western-asia').fadeOut();});
$('#sh_africa').click(function(){$('#list_western-asia').fadeOut();});
$('#sh_middle-east').click(function(){$('#list_western-asia').fadeOut();});
$('#sh_far-east').click(function(){$('#list_western-asia').fadeOut();});
$('#sh_australasia').click(function(){$('#list_western-asia').fadeOut();});

$('#sh_far-east').click(function(e){e.stopPropagation();$('#list_far-east').fadeIn();$('#map').addClass('expand');});
$('#list_far-east').click(function(e){e.stopPropagation();});
$(document).click(function(){$('#list_far-east').fadeOut();$('#map').removeClass('expand');});
$('#sh_north-america').click(function(){$('#list_far-east').fadeOut();});
$('#sh_south-america').click(function(){$('#list_far-east').fadeOut();});
$('#sh_europe').click(function(){$('#list_far-east').fadeOut();});
$('#sh_africa').click(function(){$('#list_far-east').fadeOut();});
$('#sh_middle-east').click(function(){$('#list_far-east').fadeOut();});
$('#sh_western-asia').click(function(){$('#list_far-east').fadeOut();});
$('#sh_australasia').click(function(){$('#list_far-east').fadeOut();});

$('#sh_australasia').click(function(e){e.stopPropagation();$('#list_australasia').fadeIn();$('#map').addClass('expand');});
$('#list_australasia').click(function(e){e.stopPropagation();});
$(document).click(function(){$('#list_australasia').fadeOut();$('#map').removeClass('expand');});
$('#sh_north-america').click(function(){$('#list_australasia').fadeOut();});
$('#sh_south-america').click(function(){$('#list_australasia').fadeOut();});
$('#sh_europe').click(function(){$('#list_australasia').fadeOut();});
$('#sh_africa').click(function(){$('#list_australasia').fadeOut();});
$('#sh_middle-east').click(function(){$('#list_australasia').fadeOut();});
$('#sh_western-asia').click(function(){$('#list_australasia').fadeOut();});
$('#sh_far-east').click(function(){$('#list_australasia').fadeOut();});


谢谢!

平方

如果您使用更多通用选择器,我认为您可以在示例中消除很多重复的代码。我快速通过并提出了以下建议:

$('div[id^=list_]').hide();

$('[id^=sh_]').click(function (e) {
    var list = $('#list_' + e.target.id.slice(3));
    e.stopPropagation();
    list.fadeIn();
    $('[id^=list_]').not(list).fadeOut();
    $('#map').addClass('expand');
});

$('[id^=list_]').click(function (e) {
    e.stopPropagation();
});

$(document).click(function () {
    $('[id^=list_]').fadeOut();
    $('#map').removeClass('expand');
});

您也许可以进一步优化。

JSFiddle

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

简化键盘输入的一些jQuery代码

来自分类Dev

运行一些代码的jQuery函数

来自分类Dev

一些jquery代码不起作用,而另一些则正常

来自分类Dev

追加后尝试做一些jQuery代码

来自分类Dev

在Jquery中使一些代码“实时”运行

来自分类Dev

如何识别一些jQuery代码所附的元素?

来自分类Dev

优化.click(一些功能)jQuery代码

来自分类Dev

用jQuery向元素添加一些代码

来自分类Dev

需要一些关于 jQuery 代码优化的技巧

来自分类Dev

清理一些荒谬的JavaScript代码

来自分类Dev

从代码中删除一些bbcode

来自分类Dev

了解一些Javascript代码

来自分类Dev

询问一些伪代码解释

来自分类Dev

R语言检查一些代码

来自分类Dev

了解一些汇编代码?

来自分类Dev

需要一些代码的解释。

来自分类Dev

优化一些numpy / scipy代码

来自分类Dev

尝试优化一些循环代码

来自分类Dev

跳过一些代码并退出程序

来自分类Dev

如何干掉一些代码

来自分类Dev

如果提交有一些代码,则jQuery验证不适用于提交

来自分类Dev

如何找出是否在转义时关闭了jquery对话框并执行一些代码

来自分类Dev

在jQuery中创建元素后如何执行一些代码?

来自分类Dev

当我添加一些新代码时,jQuery停止工作

来自分类Dev

如果提交有一些代码,则jQuery验证不适用于提交

来自分类Dev

我应该在哪里将afterLoad添加到一些jquery代码

来自分类Dev

使用jQuery隐藏一些文本

来自分类Dev

jQuery:焦点排除一些元素

来自分类Dev

jQuery访问一些JSON数据