Jquery更短的代码

时间:2011-08-16 14:31:16

标签: jquery

我是jquery的新手,还在学习。我现在的代码正常工作,它做了我想要的事情,除了它太长而且效率低下我想知道是否有办法让它更短更动态(计划将来添加更多图像)。有12个图像,每个图像都有唯一的ID。我还使用12个div来保存每个图像的标题。

<td>
    <a href="#0"><img src="images/disintegrator.jpg" id="img1"  height="139" border="0" /></a>
</td>

<div class="caption" id="cap1">Disintegrator</div>

有没有办法让下面的代码更短?对于其他图像,还有10个像这样的块。

$("#img1").live("mouseover", function () {
    //timeout function
    timer = window.setTimeout(function () {
        $("#cap1").show('fast')
    }, 500);

    $('#img1').mouseout(function () {
        if (timer) {
            window.clearTimeout(timer);
        }
        $("#cap1").hide('fast')
    })
});
$("#img2").live("mouseover", function () {
    timer = window.setTimeout(function () {
        $("#cap2").show('fast')
    }, 500);
    $('#img2').mouseout(function () {
        if (timer) {
            window.clearTimeout(timer);
        }
        $("#cap2").hide('fast')
    })
});

4 个答案:

答案 0 :(得分:0)

为图像添加一个公共类,比如class = switchable,例如

然后迭代每个并添加事件处理程序

$.each( $(".switchable"), function(i, element){
  $(element).live("mouseover",function(){
  //timeout function
    timer = window.setTimeout(function() {
      $("#cap"+i).show('fast')
    }, 500);

    $(element).mouseout(function() {
      if (timer) {
        window.clearTimeout(timer);
      }
      $("#cap"+i).hide('fast')
    })
  });
});

答案 1 :(得分:0)

你可以这样做:

<td>
    <a href="#0"><img src="images/disintegrator.jpg" id="img1" rel="cap1" height="139" border="0" /></a>
</td>

<div class="caption" id="cap1">Disintegrator</div>


$("img").live("mouseover", function(){
     var $e = $(this);
     timer = window.setTimeout(function() {
       $('#' + $e.attr('rel')).show('fast')
     }, 500);
});

$("img").live("mouseout", function(){
     var $e = $(this);
     if (timer) {
          window.clearTimeout(timer);
     }
     $('#' + $e.attr('rel')).hide('fast')
});

答案 2 :(得分:0)

考虑使用 .delegate()而不是 .live()。这是delegate man page

答案 3 :(得分:-1)

你可以缩小它。 http://jscompress.com/

$("#img1").live("mouseover",function(){timer=window.setTimeout(function(){$("#cap1").show("fast")},500);$("#img1").mouseout(function(){if(timer){window.clearTimeout(timer)}$("#cap1").hide("fast")})});$("#img2").live("mouseover",function(){timer=window.setTimeout(function(){$("#cap2").show("fast")},500);$("#img2").mouseout(function(){if(timer){window.clearTimeout(timer)}$("#cap2").hide("fast")})})

使代码变小总是存在缺陷,这通常会导致复杂性增加和代码可读性降低,从而使得在6个月内更难以修复支持/错误。如果您现在理解代码就可以了 - 在6个月内,当您更擅长jquery /编码时,我会再次查看它。