使用jQuery、js实现必应搜索制作

实现过程参考自 慕课网,有关具体详情可参考视频。

实现必应搜索制作,结果如下:



点击提示框中的选项进行对应的跳转(在当前页面):



使用Ajax提交http请求,从必应获取提示数据。在使用Ajax请求时,需要注意:Ajax发送请求的url地址与服务器地址必须是同一域名下。为了处理这里出现的跨域问题,采用jsonp方式(jsonp可用于解决主流浏览器的跨域数据访问的问题)。

使用 jQuery 实现如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>使用jQuery制作Bing搜索框-v2.0</title>

    <!-- 兼容性视图 -->
    <!-- 浏览器的文档模式是以最新版本的IE的文档模式来渲染的 -->
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <style>
        body {
            background-color: #333;
        }

        .bg-div {
            width: 1228px;
            height: 690px;
            margin: 0 auto;
            background-image: url(images/river.jpg);
            position: relative;
        }

        .logo {
            width: 107px;
            height: 53px;
            background-image: url(images/logo.png);

            float: left;

            margin: -4px 18px 0 0;
        }

        form {
            float: left;
            background-color: #fff;
            padding: 5px;
        }

        .search-text {
            border: 0;
            float: left;

            height: 25px;
            line-height: 25px;

            outline: none; /* 去除轮廓 */

            width: 350px;
        }

        .search-button {
            border: 0;

            width: 29px;
            height: 29px;
            background-image: url(images/search-button.png);

            float: left;
        }

        .search-box {
            position: absolute;
            top: 200px;
            left: 300px;
        }

        /* 搜索提示 */
        .suggest {
            width: 388px;
            background-color: #fff;
            border: 1px solid #999;
        }

        .suggest ul {
            list-style: none;
            margin: 0;
            padding: 0;
        }

        .suggest ul li {
            padding: 3px;
            font-size: 14px;
            line-height: 25px;
            cursor: pointer;
        }

        .suggest ul li:hover {
            background-color: #e5e5e5;
            text-decoration: underline;
        }
    </style>
</head>
<body>
<div class="bg-div">
    <div class="search-box">
        <div class="logo"></div>
        <form class="search-form" action="https://cn.bing.com/search" id="search-form">
            <input type="text" class="search-text" name="q" id="search_input" autocomplete="off">
            <input type="submit" value="" class="search-button">
        </form>
    </div>
</div>

<div class="suggest" id="search-suggest" style="display: none">
    <ul id="search-result">
        <!--<li>搜索结果1</li>
        <li>搜索结果2</li>
        <li>搜索结果3</li>-->
    </ul>
</div>

<!--<script src="jquery.min.js"></script>-->
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>

<script>
    $('#search_input').bind("keyup", function() {
        // 如: http://api.bing.com/qsonhs.aspx?q=2&o=a+ds+ds+h+p
        var jqueryInput = $(this);
        var searchText = jqueryInput.val();

        // 为解决js同源策略出现的问题,进行修改
        /*$.get('http://api.bing.com/qsonhs.aspx?q='+searchText, function(d) {
            var d = d.AS.Results[0].Suggests;
            var html = '';
            for(var i = 0; i < d.length; i++) {
                html += '<li>'+d[i].Txt+'</li>';
            }
            $('#search-result').html(html);

            $('#search-suggest').show().css({
                position: "absolute",
                top: $('#search-form').offset().top + $('#search-form').height() + 10,
                left: $('#search-form').offset().left
            });

        }, 'json');*/

        if(searchText) {
            $.ajax({
                type:"GET",
                url:"http://api.bing.com/qsonhs.aspx?type=cb&q="+searchText,
                dataType:'jsonp',
                jsonp:'cb',
                success: function(d) {
                    var d = d.AS.Results[0].Suggests;
                    var html = '';
                    for(var i = 0; i < d.length; i++) {
                        html += '<li>'+d[i].Txt+'</li>';
                    }
                    $('#search-result').html(html);

                    $('#search-suggest').show().css({
                        position: "absolute",

                        // offset().top 取得元素距浏览器顶部的距离(除工具栏)
                        // offset().left 取得元素距浏览器左边的距离
                        top: $('#search-form').offset().top + $('#search-form').height() + 10,
                        left: $('#search-form').offset().left
                    });
                },
                error: function() {
                    console.log("error");
                }
            });
        } else {
            $('#search-suggest').hide();
        }
    });

    //点击空白处,提示框消失
    $(document).bind('click', function() {
        $("#search-suggest").hide();
    });

    //为多个元素且由javascript动态生成的元素添加事件时使用事件代理
    // 为动态生成的提示框中的“li”使用事件代理
    /*$(document).delegate('#search-suggest li','click', function() {
        var keyword = $(this).text();
        location.href = 'http://cn.bing.com/search?q='+keyword;
    });*/

    //delegate 已经不建议使用了,推荐使用 $(document).on('click','li',function (){});
    $(document).on('click', '#search-suggest li', function() {
        var keyword = $(this).text();
        location.href = 'http://cn.bing.com/search?q='+keyword;
    });
</script>
</body>
</html>

可参考:  处理跨域: http://blog.csdn.net/zhouyusong_bupt/article/details/49493495

使用javascript实现如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>使用javascript制作Bing搜索框-v2.0</title>

    <!-- 兼容性视图 -->
    <!-- 浏览器的文档模式是以最新版本的IE的文档模式来渲染的 -->
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <style>
        body {
            background-color: #333;
        }

        .bg-div {
            width: 1228px;
            height: 690px;
            margin: 0 auto;
            background-image: url(images/river.jpg);
            position: relative;
        }

        .logo {
            width: 107px;
            height: 53px;
            background-image: url(images/logo.png);

            float: left;

            margin: -4px 18px 0 0;
        }

        form {
            float: left;
            background-color: #fff;
            padding: 5px;
        }

        .search-text {
            border: 0;
            float: left;

            height: 25px;
            line-height: 25px;

            outline: none; /* 去除轮廓 */

            width: 350px;
        }

        .search-button {
            border: 0;

            width: 29px;
            height: 29px;
            background-image: url(images/search-button.png);

            float: left;
        }

        .search-box {
            position: absolute;
            top: 200px;
            left: 300px;
        }

        /* 搜索提示 */
        .suggest {
            width: 388px;
            background-color: #fff;
            border: 1px solid #999;
        }

        .suggest ul {
            list-style: none;
            margin: 0;
            padding: 0;
        }

        .suggest ul li {
            padding: 3px;
            font-size: 14px;
            line-height: 25px;
            cursor: pointer;
        }

        .suggest ul li:hover {
            background-color: #e5e5e5;
            text-decoration: underline;
        }
    </style>
</head>
<body>
<div class="bg-div">
    <div class="search-box">
        <div class="logo"></div>
        <form class="search-form" action="https://cn.bing.com/search" id="search-form">
            <input type="text" class="search-text" name="q" id="search_input" autocomplete="off">
            <input type="submit" value="" class="search-button">
        </form>
    </div>
</div>

<div class="suggest" id="search-suggest" style="display: none">
    <ul id="search-result">
        <!--<li>搜索结果1</li>
        <li>搜索结果2</li>
        <li>搜索结果3</li>-->
    </ul>
</div>

<script>
    var getDOM = function(id) {
        return document.getElementById(id);
    };

    // 添加事件
    var addEvent = function(id, event, fn) {
        var el = getDOM(id) || document;
        if(el.addEventListener) {
            el.addEventListener(event, fn, false);
        } else if(el.attachEvent) {
            el.attachEvent('on'+evevt, fn);
        } else {
            el['on'+event] = fn;
        }
    };

    // offsetLeft 属性是获取元素距父元素左边的距离,同理offsetTop。
    // 为获取元素距浏览器左边的距离,自定义函数 getElementLeft,而在jQuery使用 offset().left 方法即可。
    var getElementLeft = function(element) {
        var actualLeft = element.offsetLeft;
        var current = element.offsetParent;

        while(current != null) {
            actualLeft += current.offsetLeft;
            current = current.offsetParent;
        }
        return actualLeft;
    };

    //同 getElementLeft 函数,自定义 getElementTop 函数
    var getElementTop = function(element) {
        var actualTop = element.offsetTop;
        var current = element.offsetParent;

        while(current != null) {
            actualTop += current.offsetTop;
            current = current.offsetParent;
        }
        return actualTop;
    };

    var ajaxGet = function(url, callback) {
        var xhr = null;
        if(window.XMLHttpRequest) {
            xhr = new window.XMLHttpRequest();
        } else if(window.ActiveXObject) {
            xhr = new window.ActiveXObject();
        }
        xhr.onreadystatechange = function() {
            if(xhr.readyState == 4 && xhr.status == 200) {
                callback(JSON.parse(xhr.responseText));
            }
        };
        xhr.open('get',url,true);
        /* open(method,url,async)
        规定请求的类型、URL 以及是否异步处理请求。
        method:请求的类型;GET 或 POST
        url:文件在服务器上的位置
        async:true(异步)或 false(同步)*/
        xhr.send();
    };

    addEvent('search_input','keyup', function() {
        var searchText = getDOM('search_input').value;
        if(searchText) {
            ajaxGet("http://api.bing.com/qsonhs.aspx?type=cb&q="+searchText, function(d) {
                var d = d.AS.Results[0].Suggests;
                var html = '';
                for(var i = 0; i < d.length; i++) {
                    html += '<li>' + d[i].Txt + '</li>';
                }

                var ss = getDOM('search-suggest');
                ss.innerHTML = html;
                ss.style.top = getElementTop(getDOM('search-form')) + 38 + 'px';
                ss.style.left = getElementLeft(getDOM('search-form')) + 'px';
                ss.style.position = 'absolute';
                ss.style.display = 'block';
            });
        } else {
            getDOM('search-suggest').style.display = 'none'
        }
    });
    //为解决js同源策略问题,需要修改上面代码

    //为JS动态生成的网页元素添加入事件时,通常需要使用事件代理来实现
    var delegateEvent = function(target, event, fn) {
        addEvent(document, event, function(e) {
            if(e.target.nodeName == target.toUpperCase()) {
                fn.call(e.target);
            }
        });
    };
    delegateEvent('li', 'click', function() {
        var keyword = this.innerHTML;
        location.href = 'http://cn.bing.com/search?q='+keyword;
    });

    addEvent("", "click", function() {
        getDOM('search-suggest').style.display = 'none';
    });
</script>
</body>
</html>

在控制台进行测试,出现:



修改:解决跨域问题

<script>
    var getDOM = function(id) {
        return document.getElementById(id);
    };

    // 添加事件
    var addEvent = function(id, event, fn) {
        var el = getDOM(id) || document;
        if(el.addEventListener) {
            el.addEventListener(event, fn, false);
        } else if(el.attachEvent) {
            el.attachEvent('on'+evevt, fn);
        } else {
            el['on'+event] = fn;
        }
    };

    // offsetLeft 属性是获取元素距父元素左边的距离,同理offsetTop。
    // 为获取元素距浏览器左边的距离,自定义函数 getElementLeft,而在jQuery使用 offset().left 方法即可。
    var getElementLeft = function(element) {
        var actualLeft = element.offsetLeft;
        var current = element.offsetParent;

        while(current != null) {
            actualLeft += current.offsetLeft;
            current = current.offsetParent;
        }
        return actualLeft;
    };

    //同 getElementLeft 函数,自定义 getElementTop 函数
    var getElementTop = function(element) {
        var actualTop = element.offsetTop;
        var current = element.offsetParent;

        while(current != null) {
            actualTop += current.offsetTop;
            current = current.offsetParent;
        }
        return actualTop;
    };

    //为解决js同源策略问题,修改上面代码
    var ajaxGet = function(url) {
        var JSONP = document.createElement("script");
        JSONP.src = url;
        document.getElementsByTagName("body")[0].appendChild(JSONP);
    };

    var callback = function(d) {

        if(d.AS.Results) {
            d = d.AS.Results[0].Suggests;
        }

        var html = '';
        for(var i = 0; i < d.length; i++) {
            html += '<li>' + d[i].Txt + '</li>';
        }

        getDOM('search-result').innerHTML = html;
        var ss = getDOM('search-suggest');
        ss.style.top = getElementTop(getDOM('search-form')) + 38 + 'px';
        ss.style.left = getElementLeft(getDOM('search-form')) + 'px';
        ss.style.position = 'absolute';
        ss.style.display = 'block';

        var jsonp = document.getElementsByTagName('body')[0].getElementsByTagName('script');
        if(jsonp) {
            for(var i = 1; i < jsonp.length; i++) {
                if(jsonp[i]) {
                    jsonp[i].parentNode.removeChild(jsonp[i]);
                    //console.log(jsonp[i]);
                }
            }
        }
    };

    //为JS动态生成的网页元素添加入事件时,通常需要使用事件代理来实现
    var delegateEvent = function(target, event, fn) {
        addEvent(document, event, function(e) {
            if(e.target.nodeName == target.toUpperCase()) {
                fn.call(e.target);
            }
        });
    };

    addEvent('search_input', 'keyup', function() {
        var searchText = getDOM('search_input').value;
        if(searchText) {
            ajaxGet("http://api.bing.com/qsonhs.aspx?type=cb&cb=callback&q="+searchText);
        } else {
            getDOM('search-suggest').style.display = 'none';
        }
    });

    delegateEvent('li', 'click', function() {
        var keyword = this.innerHTML;
        location.href = 'http://cn.bing.com/search?q='+keyword;
    });

    addEvent("", "click", function() {
        getDOM('search-suggest').style.display = 'none';
    });
</script>


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="keywords" content="VihChina资源网 www.vihchina.net"/> <meta name="description" content="VihChina资源网 www.vihchina.net"/> <title>VihChina资源网 www.vihchina.net</title> <script language="javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> <style type="text/css"> *{margin:0;padding:0;list-style:none} body{background:#B2BDC4; font-size:12px} .mbox{margin:100px auto 0 auto;width:958px;height:574px;background:#AAB9C1;padding:3px; position:relative} .mbox_inner{width:956px;height:572px;background:#D0D9DD;padding:1px; position:relative} .mbg{ width:956px; height:512px; position:absolute; display:none} .box{ width:956px; height:512px;} .s_box{position:absolute;z-index:9999px; width:38px;height:38px;border:1px #000 solid;-moz-opacity:0.6;opacity:0.6;filter:alpha(opacity=60);} .s_box span{display:block;width:36px;height:36px;margin:1px;background:#000;} .b_box{position:absolute;padding:1px;width:196px;height: auto; overflow:hidden;border:1px #000 solid;-moz-opacity:0.6;opacity:0.6;filter:alpha(opacity=60); display:none} .b_box div{width:192px;height:72px;background:#000; padding:2px} .b_box div a{font-size:13px; color:#FFFFFF; line-height:20px; text-decoration:none} .tbox{width:956px;height:60px; position:absolute; bottom:0; left:1px; font-size:12px} .tbox div{border-right:1px #d8dfe3 solid;float:left;padding:0 15px;margin:9px 0;width:20%;color:#737373} .tbox div h3{font-size:medium;font-weight:200;margin:0 0 6px;} .tbox .ps{_height:100%;border:0;float:none;width:auto} .tbox .ps a{ display:block; float:left; width:50%; height:25px;font-size:13px; line-height:25px;overflow:hidden;color:#000; text-decoration:none; } .tbox div a{ display:block; float:left; width:100%; height:25px;font-size:13px; line-height:25px;overflow:hidden;color:#000; text-decoration:none; font-size:13px} .op{width:auto; height:30px; position:absolute; right:10px; bottom:70px; z-index:9999} .op a{display: block;cursor:default;position:relative;} .op a span{padding:5px;background:#fff;position:absolute;white-space:nowrap;color:#150417; font-size:13px;border:1px solid #555; visibility:hidden;bottom:1px;right:1px;} .op a:hover span{visibility:visible} .bt_txt{float:left; width:18px; height:18px; text-align:center; line-height:18px; color:#fff; border:1px solid #fff; margin:2px; font-size:12px} .coptxt{float:left; width:19px; height:19px; line-height:25px; text-align:center; color:#fff; margin:2px; font-size:20px; overflow:hidden} .fcopy{ width:860px; height:80px; clear:both; margin:20px auto;} .fcopy p{ text-align:center; line-height:30px; color:#666; font-size:12px;} .fcopy p a{ color:#c92215; text-decoration:none;} .fcopy p a:hover{ color:#f00;} </style> </head> <body> <div class="itop"> </div> <div class="mbox" id="mbox"> <div class="mbox_inner" id="mbox_inner"> <div class="tbox" id="tbox"> <div> <h3></h3><a href="http://www.vihchina.net" target="_blank"></a> </div> <div> <h3></h3><a href="http://www.vihchina.net" target="_blank"></a> </div> <div class="ps"> <h3></h3><a href="http://www.vihchina.net" target="_blank"></a> </div> </div> </div> <div class="op" id="op"> <div><a id="bt_l"><div class="bt_txt">◄</div><span><p>上一幅图片</p></span></a></div> <div><a id="bt_r"><div class="bt_txt">►</div><span><p>下一幅图片</p></span></a></div> <div><a id="bt_c"><div class="coptxt">© </div><span><p></p></span></a> </div> </div> </div> <div class="fcopy"> <p>CopyRight © 2008-2010 VihChina资源网 邮箱:306521617@qq.com  QQ:306521617 网址:<a href="http://www.vihchina.net" target="_blank" title="VihChina资源网">VihChina资源网</a></p> </div> </body> </html> <script language="javascript"> //设置图片数 var len = 7; //定义数据字典 var data = { "0":{ "img":"images/1.jpg", "copyt":"图瓦卢的首都富纳富提岛 -- George Steinmetz/Corbis", "div":{ "0":{"h3":"今日图片故事","a_url":"http://www.vihchina.net","a_txt":"图瓦卢的首都富纳富提岛"}, "1":{"h3":"喜欢这张图片吗?","a_url":"http://www.vihchina.net","a_txt":"喜欢,寻找更多"}, "2":{"h3":"cosset vs. pamper","a_url":"http://www.vihchina.net","a_txt":"同样是“消失”的意思吗?"} }, "tbox":{ "0":{"a_txt":"图瓦卢的首都富纳富提岛1","a_url":"http://www.vihchina.net","s_box_l":720,"s_box_t":90,"b_box_l":760,"b_box_t":90}, "1":{"a_txt":"图瓦卢的首都富纳富提岛2","a_url":"http://www.vihchina.net","s_box_l":200,"s_box_t":290,"b_box_l":240,"b_box_t":290}, "2":{"a_txt":"图瓦卢的首都富纳富提岛3","a_url":"http://www.vihchina.net","s_box_l":460,"s_box_t":160,"b_box_l":500,"b_box_t":160}, "3":{"a_txt":"图瓦卢的首都富纳富提岛4","a_url":"http://www.vihchina.net","s_box_l":500,"s_box_t":320,"b_box_l":540,"b_box_t":320} } }, "1":{ "img":"images/2.jpg", "copyt":"加拿大班夫公园的兔鼠 -- George Steinmetz/Corbis", "div":{ "0":{"h3":"今日图片故事","a_url":"http://www.vihchina.net","a_txt":"家有小宠:可爱的宠物鼠"}, "1":{"h3":"喜欢这张图片吗?","a_url":"http://www.vihchina.net","a_txt":"喜欢,寻找更多"}, "2":{"h3":"cosset vs. pamper","a_url":"http://www.vihchina.net","a_txt":"同样是“机智”的意思?"} }, "tbox":{ "0":{"a_txt":"图瓦卢的首都富纳富提岛1","a_url":"http://www.vihchina.net","s_box_l":720,"s_box_t":90,"b_box_l":760,"b_box_t":90}, "1":{"a_txt":"图瓦卢的首都富纳富提岛2","a_url":"http://www.vihchina.net","s_box_l":220,"s_box_t":290,"b_box_l":260,"b_box_t":290}, "2":{"a_txt":"图瓦卢的首都富纳富提岛3","a_url":"http://www.vihchina.net","s_box_l":400,"s_box_t":160,"b_box_l":440,"b_box_t":160}, "3":{"a_txt":"图瓦卢的首都富纳富提岛4","a_url":"http://www.vihchina.net","s_box_l":420,"s_box_t":320,"b_box_l":460,"b_box_t":320} } }, "2":{ "img":"images/3.jpg", "copyt":"阿拉斯加的小猪赛跑 -- George Steinmetz/Corbis", "div":{ "0":{"h3":"今日图片故事","a_url":"http://www.vihchina.net","a_txt":"家有小宠:迷你宠物猪"}, "1":{"h3":"喜欢这张图片吗?","a_url":"http://www.vihchina.net","a_txt":"喜欢,寻找更多"}, "2":{"h3":"cosset vs. pamper","a_url":"http://www.vihchina.net","a_txt":"同样是“宠爱”的意思?"} }, "tbox":{ "0":{"a_txt":"图瓦卢的首都富纳富提岛1","a_url":"http://www.vihchina.net","s_box_l":720,"s_box_t":90,"b_box_l":760,"b_box_t":90}, "1":{"a_txt":"图瓦卢的首都富纳富提岛2","a_url":"http://www.vihchina.net","s_box_l":280,"s_box_t":290,"b_box_l":320,"b_box_t":290}, "2":{"a_txt":"图瓦卢的首都富纳富提岛3","a_url":"http://www.vihchina.net","s_box_l":400,"s_box_t":160,"b_box_l":440,"b_box_t":160}, "3":{"a_txt":"图瓦卢的首都富纳富提岛4","a_url":"http://www.vihchina.net","s_box_l":720,"s_box_t":320,"b_box_l":760,"b_box_t":320} } }, "3":{ "img":"images/4.jpg", "copyt":"张着大嘴做鬼脸的小狮子 -- George Steinmetz/Corbis", "div":{ "0":{"h3":"今日图片故事","a_url":"http://www.vihchina.net","a_txt":"家有小宠:打哈欠的小狮子"}, "1":{"h3":"喜欢这张图片吗?","a_url":"http://www.vihchina.net","a_txt":"喜欢,寻找更多"}, "2":{"h3":"cosset vs. pamper","a_url":"http://www.vihchina.net","a_txt":"同样是“令人望而生畏”的意?"} }, "tbox":{ "0":{"a_txt":"图瓦卢的首都富纳富提岛1","a_url":"http://www.vihchina.net","s_box_l":660,"s_box_t":90,"b_box_l":700,"b_box_t":90}, "1":{"a_txt":"图瓦卢的首都富纳富提岛2","a_url":"http://www.vihchina.net","s_box_l":220,"s_box_t":290,"b_box_l":260,"b_box_t":290}, "2":{"a_txt":"图瓦卢的首都富纳富提岛3","a_url":"http://www.vihchina.net","s_box_l":400,"s_box_t":160,"b_box_l":440,"b_box_t":160}, "3":{"a_txt":"图瓦卢的首都富纳富提岛4","a_url":"http://www.vihchina.net","s_box_l":560,"s_box_t":320,"b_box_l":600,"b_box_t":320} } }, "4":{ "img":"images/5.jpg", "copyt":"泡温泉的日本猕猴昏昏欲睡 -- George Steinmetz/Corbis", "div":{ "0":{"h3":"今日图片故事","a_url":"http://www.vihchina.net","a_txt":"家有小宠:滑稽的猴子"}, "1":{"h3":"喜欢这张图片吗?","a_url":"http://www.vihchina.net","a_txt":"喜欢,寻找更多"}, "2":{"h3":"cosset vs. pamper","a_url":"http://www.vihchina.net","a_txt":"同样是“滑稽”的意思?"} }, "tbox":{ "0":{"a_txt":"图瓦卢的首都富纳富提岛1","a_url":"http://www.vihchina.net","s_box_l":140,"s_box_t":100,"b_box_l":180,"b_box_t":100}, "1":{"a_txt":"图瓦卢的首都富纳富提岛2","a_url":"http://www.vihchina.net","s_box_l":200,"s_box_t":310,"b_box_l":240,"b_box_t":310}, "2":{"a_txt":"图瓦卢的首都富纳富提岛3","a_url":"http://www.vihchina.net","s_box_l":460,"s_box_t":160,"b_box_l":500,"b_box_t":160}, "3":{"a_txt":"图瓦卢的首都富纳富提岛4","a_url":"http://www.vihchina.net","s_box_l":700,"s_box_t":290,"b_box_l":740,"b_box_t":290} } }, "5":{ "img":"images/6.jpg", "copyt":"可爱的宠物狗在沙滩上玩耍 -- George Steinmetz/Corbis", "div":{ "0":{"h3":"今日图片故事","a_url":"http://www.vihchina.net","a_txt":"家有小宠:可爱的小狗"}, "1":{"h3":"喜欢这张图片吗?","a_url":"http://www.vihchina.net","a_txt":"喜欢,寻找更多"}, "2":{"h3":"cosset vs. pamper","a_url":"http://www.vihchina.net","a_txt":"同样是“温顺”的意思?"} }, "tbox":{ "0":{"a_txt":"图瓦卢的首都富纳富提岛1","a_url":"http://www.vihchina.net","s_box_l":230,"s_box_t":100,"b_box_l":270,"b_box_t":100}, "1":{"a_txt":"图瓦卢的首都富纳富提岛2","a_url":"http://www.vihchina.net","s_box_l":160,"s_box_t":300,"b_box_l":200,"b_box_t":300}, "2":{"a_txt":"图瓦卢的首都富纳富提岛3","a_url":"http://www.vihchina.net","s_box_l":580,"s_box_t":260,"b_box_l":620,"b_box_t":260}, "3":{"a_txt":"图瓦卢的首都富纳富提岛4","a_url":"http://www.vihchina.net","s_box_l":620,"s_box_t":420,"b_box_l":660,"b_box_t":420} } }, "6":{ "img":"images/7.jpg", "copyt":"本月世博之最:最不堪重负的展馆墨西哥管 -- George Steinmetz/Corbis", "div":{ "0":{"h3":"今日图片故事","a_url":"http://www.vihchina.net","a_txt":"本月世博之最:最不堪重负的展馆墨西哥管最不堪重负的展馆墨西哥管最不堪重负的展馆墨西哥管"}, "1":{"h3":"喜欢这张图片吗?","a_url":"http://www.vihchina.net","a_txt":"喜欢,寻找更多寻找更多寻找更多"}, "2":{"h3":"cosset vs. pamper","a_url":"http://www.vihchina.net","a_txt":"同样是“场馆”的意思?同样是“场馆”的意思?同样是“场馆”的意思?同样是“场馆”的意思?"} }, "tbox":{ "0":{"a_txt":"图瓦卢的首都富纳富提岛1","a_url":"http://www.vihchina.net","s_box_l":260,"s_box_t":100,"b_box_l":300,"b_box_t":100}, "1":{"a_txt":"图瓦卢的首都富纳富提岛2","a_url":"http://www.vihchina.net","s_box_l":180,"s_box_t":280,"b_box_l":220,"b_box_t":280}, "2":{"a_txt":"图瓦卢的首都富纳富提岛3","a_url":"http://www.vihchina.net","s_box_l":540,"s_box_t":160,"b_box_l":580,"b_box_t":160}, "3":{"a_txt":"图瓦卢的首都富纳富提岛4","a_url":"http://www.vihchina.net","s_box_l":580,"s_box_t":300,"b_box_l":620,"b_box_t":300} } } }; var msr=100; //范围半径 var sqr=20; //小矩形半径 var acboxs=[]; //保存活动点信息 var msflag=false; //标志是否执行#box的mousemove绑定函数 //显示数据 function showimg(p){ var speed=1300; $(".mbg").fadeOut(speed); $("#mbg_"+p).fadeIn(speed); $("#bt_c span p").html(data[p].copyt); $("#mbg_"+p).css('display','block'); $(".tbox div").each(function(k){ $(this).find("h3").html(data[p].div[k].h3); $(this).find("a").html(data[p].div[k].a_txt); $(this).find("a").attr('href',data[p].div[k].a_url); }); init(p); MouseMove(p); } //数据初始化函数 function inital(){ for(i=0;i<=len-1;i++){ var obj = "<div class='mbg' id='mbg_"+i+"' style='background:url("+data[i].img+")'></div>"; $(obj).prependTo("#mbox_inner"); if (i==len-1){ $("#bt_c span p").html(data[i].copyt); $("#mbg_"+i).css('display','block'); $(".tbox div").each(function(k){ $(this).find("h3").html(data[i].div[k].h3); $(this).find("a").html(data[i].div[k].a_txt); $(this).find("a").attr('href',data[i].div[k].a_url); }); init(i); MouseMove(i); } } } //初始化按钮事件 var init=function(k){ $(".mbg").empty(); function delay(count){ window.setTimeout(function(){ count--; if(count>0){ delay(count); }else{ var i_obj; $.each(data[k].tbox,function(n,val){ i_obj = "<span class='s_box' id='s_box_"+n+"' style='left:"+val.s_box_l+"px;top:"+val.s_box_t+"px'><span></span></span><div class='b_box' id='b_box_"+n+"' style='left:"+val.b_box_l+"px;top:"+val.b_box_t+"px'><div><a href='"+val.a_url+"' target='_blank'>"+val.a_txt+"</a></div></div>"; $(i_obj).appendTo("#mbg_"+k); }); var obj; $("#mbg_"+k+" .s_box").each(function(){ obj = new Object(); obj.sq = $(this); obj.x = $(this).position().left+sqr; obj.y = $(this).position().top+sqr; acboxs.push(obj); bindS_box_Hover(obj.sq); bindB_box_Hover(obj.sq); }); } },1000); } delay(2); setTimeout('$(".mbg .s_box").animate({opacity: "0"},50)',2500); } //绑定鼠标移动事件 var MouseMove=function(h){ $("#mbg_"+h).bind("mousemove",function(e){ var e = e||event; var x = e.clientX-($(this).offset().left); var y = e.clientY-($(this).offset().top); if (!msflag){ for (var i=0;i<acboxs.length;i++){ if(ishow(x,y,acboxs[i])){ acboxs[i].sq.stop().fadeTo(30,0.6); }else{ acboxs[i].sq.stop().animate({opacity: '0'},50); } } } })/*.bind("mouseout",function(){ $(".mbg .s_box").animate({opacity: '0.2'},50) })*/; } var ishow = function(x,y,vobj){ var r1 = Math.abs(x-vobj.x); var r2 = Math.abs(y-vobj.y); if (r1<msr&&r2<msr){ return true; }else{ return false; } } //小区域的hover事件 function bindS_box_Hover(obj){ obj.hover(function(){ obj.next().stop().fadeTo(50,0.6); },function(){ obj.next().stop().fadeOut(50); }); } //内容区域的hover事件 function bindB_box_Hover(obj){ obj.next().hover(function(){ msflag=true; obj.next().stop(); },function(){ msflag = false; obj.next().stop().fadeOut(50); obj.stop().fadeOut(50); }); } //切换图片 $(function(){ //调用数据初始化 inital(); var index = len-1; //设置第一个显示 //点击上一幅图片 $("#bt_l").mouseover(function(){ $(this).css('cursor','pointer'); $("#bt_l span").css('right','50px'); }).click(function(){ index--; if (index>=0){ showimg(index); }else{ index=0; } }); //点击下一幅图片 $("#bt_r").mouseover(function(){ $(this).css('cursor','pointer'); $("#bt_r span").css('right','26px'); }).click(function(){ index++; if (index<=len-1){ showimg(index); }else{ index = len-1; } }); }) </script> 来源 VihChina资源网 网址:http://www.vihchina.net
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值