javascript - 制作更智能的 jQuery 代码

标签 javascript jquery

我想知道是否有人知道如何重写这个简单的 jquery 代码以提高效率。它现在当然工作正常,但我想再添加 10 个项目会使代码变得非常大。我想也许我可以将类添加到数组并使用某种循环?虽然不确定这是否是正确的方法。

这是在 jsfiddle 上的: http://jsfiddle.net/QVS9X/42/

这是它的一个示例: JS:

$(".image1").mouseout(function() {
    $(".default").show();
    $(".cat1").hide();
}).mouseover(function() {
    $(".default").hide();
    $(".cat1").show();
});

$(".image2").mouseout(function() {
    $(".default").show();
    $(".cat2").hide();
}).mouseover(function() {
    $(".default").hide();
    $(".cat2").show();
});

HTML:

<div class="image1 image">
    <p>Hover for cat 1</p>
</div>
<div class="image2 image">
    <p>Hover for cat 2</p>
</div>
<div class="image3 image">
    <p>Hover for cat 3</p>
</div>
<div class="default">
    <p>Default Text</p>
</div>
<div id="cats">
    <p class="cat1">Category 1 text</p>
    <p class="cat2">Category 2 text</p>
    <p class="cat3">Category 3 text</p>
</div>

最佳答案

如果你可以将一类图像放在当前有 image1、image2 等的 div 上,那么你可以这样做:

$(".image").hover(function() {
    $(".default").toggle();
    $("#cats p").eq($(this).index()).toggle();
}); 

这假设图像 div 的顺序与 #cats 中的 p 标签的顺序相同。

http://jsfiddle.net/QVS9X/44/

使用数据属性的例子:

JS:

$(".image").hover(function() {
    $(".default").toggle();
    $($(this).data('id')).toggle()    
});  

HTML:

<div class="image" data-id="#cat1">
    <p>Hover for cat 1</p>
</div>
<div id="cats">
    <p id="cat1">Category 1 text</p>
</div>

http://jsfiddle.net/QVS9X/55/

关于javascript - 制作更智能的 jQuery 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7583263/

相关文章:

jquery - Sinatra 不发送 header

javascript - 使用 Node.js 执行命令行二进制文件

javascript - 获取确认框的下一个表格单元格文本

javascript - 分号、期望和(结束)

javascript - InputMask 范围从 0 到 254

javascript - Square 是否正确继承自 Rectangle?

Javascript TinyMCE 和 Tinybox2

javascript - 将链接 href 与菜单状态的地址路径进行比较

javascript - 从模态中获取输入值

javascript - 递归在 Chrome/Firefox 中工作,但在 IE7 中不工作