0

これは私のjqueryコードです

this.imagePreview = function(){ 

    xOffset = 8;
    yOffset = 20;

    $("a.preview").hover(function(e){
        this.t = this.title;
        this.title = "";    
        var c = (this.t != "") ? "<br/>" + this.t : "";
        $("body").append(
            "<p id='preview'><img src='" 
            + this.href 
            + "' alt='Image preview' />" 
            + c 
            + "</p>"
        );                               
        $("#preview")
            .css("top",(e.pageY - xOffset) + "px")
            .css("left",(e.pageX + yOffset) + "px")
            .fadeIn("fast");                        
    },
    function(){
        this.title = this.t;    
        $("#preview").remove();
    }); 
    $("a.preview").mousemove(function(e){
        $("#preview")
            .css("top",(e.pageY - xOffset) + "px")
            .css("left",(e.pageX + yOffset) + "px");
    });         
};

// starting the script on page load
$(document).ready(function(){
    imagePreview();
});

これはhtmlコードです

<a href="1.png" target="_blank" class="preview"><img src="1s.png"></a>

これはcssコードです

#preview{
    position: absolute;
    background: #333;
    padding: 5px;
    display: none;
    color: #fff;
}

これはすべてこのフィドル http://jsfiddle.net/56wk9/に あります(このフィドルに収まる画像は見つかりませんでしたが、このコードは正常に機能しています)

このコードの機能は、別の画像1s.pngにカーソルを合わせると画像1.pngを表示することです。

しかし、このコードは次のように表示される画像を使用しているため

<a href="1.png" target="_blank" class="preview"> 

ベース画像をクリックすると、この拡大画像が新しいウィンドウで開きます。代わりに、この拡大画像ではなく別のWebサイトを開く必要があります。Webページのリンクを配置すると、ホバー効果が表示されません。

すべての助けは黄金です。

4

1 に答える 1

1

hrefの代わりにリンクのデータを使用してください。

例えば

<a href=""http://www.somesite.com data="image-1s.png"><img ...></a>

次に、this.href使用する代わりにデータを使用します

$("body").append("<p id='preview'><img src='"+ $(this).attr('data') +"' alt='Image preview' />

これが更新されたフィドルです

HTML

<a href="http://www.google.com" target="_blank" class="preview" data="http://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/Bachalpseeflowers.jpg/300px-Bachalpseeflowers.jpg"><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Hopetoun_falls.jpg/300px-Hopetoun_falls.jpg"></a>

Javascript

this.imagePreview = function(){ 

        xOffset = 8;
        yOffset = 20;

    $("a.preview").hover(function(e){
        this.t = this.title;
        this.title = "";    
        var c = (this.t != "") ? "<br/>" + this.t : "";
        $("body").append("<p id='preview'><img src='"+ $(this).attr('data') +"' alt='Image preview' />"+ c +"</p>");                                 
        $("#preview")
            .css("top",(e.pageY - xOffset) + "px")
            .css("left",(e.pageX + yOffset) + "px")
            .fadeIn("fast");                        
    },
    function(){
        this.title = this.t;    
        $("#preview").remove();
    }); 
    $("a.preview").mousemove(function(e){
        $("#preview")
            .css("top",(e.pageY - xOffset) + "px")
            .css("left",(e.pageX + yOffset) + "px");
    });         
};


// starting the script on page load
$(document).ready(function(){
    imagePreview();
});

CSS

#preview{
    position:absolute;
    background:#333;
    padding:5px;
    display:none;
    color:#fff;
    /*box-shadow: 4px 4px 3px rgba(103, 115, 130, 1);*/
}
于 2013-02-25T14:49:16.170 に答える