自定义jQuery方法独立于元素的每个实例

Rya*_*ing 3 javascript jquery

我创建了一种方法,可以在鼠标悬停时在图像的一侧显示黑条.当它只有一个图像时,一切都很好,但是当应用于多个图像时,如果鼠标悬停,则两个图像上都会出现黑条.

是否可以让每个图像彼此独立地操作,以便鼠标悬停事件仅激活该特定图像的黑条?


jsFiddle - http://jsfiddle.net/7kw8z/11/


我通过这个方法调用 $("img.edit").panzoom();

这是方法:

!function($){


$.fn.panzoom = function() {
    var $this = $(this);
    this.imagesLoaded(function(){

        $this.wrap('<div class="img_wrapper" />');

        var imgEl = $this.parent(".img_wrapper");

        imgEl.width($this.width());
        imgEl.height($this.height());
        //imgEl.offset({top:$this.offset().top,left:$this.offset().left});

        imgEl.append('<div class="img_menu" />');
        menuEl = imgEl.children(".img_menu");


        imgEl.hover(function() {
            $(menuEl).css("visibility", "visible");
        },  function() {
            $(menuEl).css("visibility", "hidden");
        });

    });
}

}(window.jQuery);
Run Code Online (Sandbox Code Playgroud)

Abr*_*ibe 5

你可以做

$.fn.panzoom = function() {
return this.each(function(){
    var $this = $(this);
    $this.imagesLoaded(function(){
        $this.wrap('<div class="img_wrapper" />');

        var imgEl = $this.parent(".img_wrapper");

        imgEl.width($this.width());
        imgEl.height($this.height());

        imgEl.append('<div class="img_menu" />');
        var menuEl = imgEl.children(".img_menu");

        imgEl.hover(function() {
            menuEl.css("visibility", "visible");
        },  function() {
            menuEl.css("visibility", "hidden");
        });
    });
});
}     
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/7kw8z/21/