JQuery 技巧

一、让子元素都是同样的高度

$.fn.equalHeights = function() {  
    $(this).each(function(){  
        var currentTallest = 0;  
        $(this).children().each(function(i){  
            if ($(this).height() > currentTallest) { currentTallest = $(this).height(); }  
        });  
        // for ie6, set height since min-height isn't supported  
        if ($.browser.msie && $.browser.version == 6.0) { $(this).children().css({'height': currentTallest}); }  
        $(this).children().css({'min-height': currentTallest});  
    });  
    return this;  
};

使用方法

$(function(){      $('#container').equalHeights();   })  

解决IE6″闪”的问题

$("a").click(function(event){   

   event.preventDefault();  });

判断元素是否存在

if ($('#myDiv').length)

删除一条记录时,闪一下再消失

$(this).parents(".record").animate({ backgroundColor: "#fbc7c7" }, "fast")   

.animate({ opacity: "hide" }, "slow");

字符串替换
用 JQuery 能对文本内容中的特定字符串进行替换操作:

var el = $('#id');
el.html(el.html().replace(/word/ig, ""));
禁用右键菜单
有许多 JavaScript 代码段可禁用右键菜单,但 JQuery 使操作变得更容易:
$(document).ready(function(){
      $(document).bind("contextmenu",function(e){
          return false;
      });
});

$(document).ready(function() {


$("#orderedlist > li:last").addClass("blue");//first last取得第一个或者最后一个元素
$("li").css("background","red").css("color","gray");//一次设定两个css属性
$("a[@name]").background("#eee");//选择所有的带有name属性的链接
$("li[@name*='tu']").css("background","red");//部分匹配("*=")的方式来代替完全匹配("=")
$("li").not("[ul]").css("background", "red");//选择所有的没有ul子元素的li元素
$("a").hover(function() {$(this).parent("p").css("background","yellow");});//选择父级的元素

$("a").addClass("test").show().html("foo");//方法允许链接使用

$("p").filter([".selected", ":first"]);保留类名是selected的段落元素,同时保留第一个

$("a").hover(function() {
$(this).parents("p").addClass("highlight");
}, function() {
$(this).parents("p").removeClass("highlight");
});//移到文章某段的链接时,它所在的段全用上highlight样式,移走之后又恢复原样

jquery 技巧: 图片大小自适应

图片撑破页面,相信大家会有被困扰的时候,或许是以前,或许是现在,但不要紧了,jquery帮你两行代码就解决问题,让图片被受控制。

代码如下:

$(document).ready(function(){
var ywidth = 500;//初始最大宽度
$(”img”).each(function(){
   if($(this).width() > ywidth) {
    $(this).width(ywidth);
   }
});
});

把它加到网页上立杆见影,让图片不在头痛。有的朋友可能会想查看大图,那没问题,再加几行代码,加个点击查看大图的效果。

代码如下:

$(document).ready(function(){
var ywidth = 450;//初始最大宽度
$(”img”).each(function(){
   if($(this).width() > ywidth) {
    $(this).width(ywidth);
    $(this).mouseover(function(){
     $(this).css(”cursor”,”hand”);
    });
    $(this).click(function(){
     window.location.href = $(this).attr(”src”);
    });
   }
});
});

图片撑破容器是很煞风景的事情,不牵扯到后台生成缩略图的解决方法是在前端对于撑破容器的图片,指定width="100%",则图片会自动适应父容器的宽度。虽然难看了一点,但不失为一个经济且花费小的方法。
用JS简单的实现思路就是遍历所有页面图片,对于宽度大于父元素的,添加width属性,当然根据需要还可以加上Lightbox之类的特效。
---code start---

PHP 代码:
$("img").each(function(){  
     if($(
this).width() > $(this).parent().width()) {  
         $(
this).width("100%");  
     }  
});

---code end---
说了这么多代码只有3行而已。其实对于REST理论,貌似在目前的Web应用中最受惠的可能就是图片这一块了,试想同一个url,如果能对带有不同的 header请求返回缩略图,图片描述,图片本身,作者和版权信息,那么图片相关的应用将简洁到一个令人心旷神怡的境界。可惜现在的REST都只是框架级 别的应用,对比传统MVC也没有太明显的优势,或许等服务器端进行一定程度的改善之后,REST才能大行其道吧。
话说俺人生的第二个本命年真是多灾多难的一年啊……

 

jQuery 使用注意点技巧  

1、$('div').eq(i) 这样才能取到 jquery 对象

2、$("p").click(function(){alert($(this).html())})             
//为每个p元素增加了click事件,单击某个p元素则弹出其内容

注意那个$(this)

$("tr").each(function(i){this.style.backgroundColor=['#ccc','#fff'][i%2]})      
//实现表格的隔行换色效果

$("p").click(function(i){this.style.color=['#f00','#0f0','#00f'][i]})   //为三个不同的p元素单击事件分别设定不同的处理

注意那个function(i)

3、$(document).ready(function(){alert("Load Success")})
//页面加载完毕提示“Load Success”,不同于onload事件,onload需要页面内容加载完毕(图片等),而ready只要页面html代码下载完毕即触发。与$(fn)等价

4、//每次点击时轮换添加和删除名为selected的class。
       $("p").toggle(function(){
              $(this).addClass("selected");  
       },function(){
              $(this).removeClass("selected");
       });

5、 $("p").trigger("click");        //触发所有p元素的click事件

6、$("p").bind("click", function(){alert($(this).text());});
//为每个p元素添加单击事件
$("p").unbind();       //删除所有p元素上的所有事件
$("p").unbind("click")       //删除所有p元素上的单击事件

7、$.each( [0,1,2], function(i, n){ alert( "Item #" + i + ": " + n ); });

等价于:

var tempArr=[0,1,2];
for(var i=0;i<tempArr.length;i++){
       alert("Item #"+i+": "+tempArr[i]);
}

也可以用来处理json

$.each( { name: "John", lang: "JS" }, function(i, n){ alert( "Name: " + i + ", Value: " + n ); });

 

 

posted on 2009-11-21 10:42  冉元胜  阅读(340)  评论(0编辑  收藏  举报

导航