刚接触Web,写了个下拉列表插件,有BUG,请教大家指点

;(function ($) {
    $.fn.DrowDowEditor = function (opts) {
        opts = jQuery.extend({
         panel:$(this),
         data: null }, opts || {});
        return this.each(function() {
         var panelID = opts.panel[0].id;
        //--------下拉容器--------------
        var dropdownPanelHtml = ‘<div id="drop_down_editor_panel‘ + panelID + ‘" style="border:1px solid #3471b0;  min-width:100px;  position:absolute;"></div>‘;
        $(dropdownPanelHtml).insertAfter(opts.panel);
        var dropdownPanel = $("#drop_down_editor_panel" + panelID);
        //------------------------------
        //使用DIV相对定位包着textbox和下拉容器
        var container = ‘<div style="position:reletive; background-color:red;" id="drop_down_editor_container‘ + panelID + ‘"></div>‘;
        $(container).insertBefore(opts.panel);
        var editorContainer = $("#drop_down_editor_container" + panelID);
        opts.panel.appendTo(editorContainer);
        dropdownPanel.appendTo(editorContainer);
        opts.panel.css("float", "left");
        //--------添加下拉按钮-------------
        var button = ‘<div style=" border: solid 1px #3471b0;border-left: none;padding: 4px;overflow: hidden; outline: none;width:12px; background-image:url(../../images/arr_right_blue.png); background-repeat:no-repeat; background-position:center;float:left; height:15px;"></div>‘;
        $(button).insertAfter(opts.panel);
        //---------------------------------
        dropdownPanel.css("top", "30px");
        dropdownPanel.css("left", "6px");
        dropdownPanel.hide();

        for (var i = 0; i < opts.data.length; i++) {

            var dataItem = ‘<div class="drop_item">‘ + opts.data[i].key + ‘</div>‘;
            dropdownPanel.append(dataItem);
        }

        dropdownPanel.find(".drop_item").click(function () {
            alert(opts.panel[0].id);
            opts.panel.val($(this).html());
        });
        $(".drop_item:odd").mouseenter(function () {
            $(this).css("background-color", "#3471b0");
        });
        $(".drop_item:odd").mouseleave(function () {
            $(this).css("background-color", "white");
        });
        $(".drop_item:odd").css("background-color", "white");
       opts. panel.click(function (e) {
            e.stopPropagation();

            dropdownPanel.width(opts.panel.width() + 15 + 14);
            dropdownPanel.slideDown(300);
        });

        $(document).click(function () {
            dropdownPanel.slideUp(300);
        });
          opts.panel.css("clear","both");
        });
    }
})(jQuery);
<div>
<input type="text" id="dropdown1" class="dropdownEditor" />
<div>123123</div>
<input type="text" id="dropdown" class="dropdownEditor" />
</div>
$("#dropdown").DrowDowEditor({
data: [{"key":"百度","value":"www.baidu.com"},{"key":"新浪","value":"www.sina.com.cn"},{"key":"测试","value":"test.com"},{"key":"博客园","value":"cnblog.cn"}]
});

$("#dropdown1").DrowDowEditor({
data: [{"key":"百度1","value":"www.baidu.com"},{"key":"新浪1","value":"www.sina.com.cn"},{"key":"test","value":"test.com"},{"key":"博客园1","value":"cnblog.cn"}]
});

效果:

如果只是渲染一个基本可以呈现出来,如果是多个,就产生覆盖问题了,刚接触web,知识浅薄,希望大家多加指点。

时间: 2024-11-14 12:22:52

刚接触Web,写了个下拉列表插件,有BUG,请教大家指点的相关文章

写了个下拉列表插件,有BUG,请教大家指点

前端UI分享 ;(function ($) { $.fn.DrowDowEditor = function (opts) { opts = jQuery.extend({ panel:$(this), data: null }, opts || {}); return this.each(function() { var panelID = opts.panel[0].id; //--------下拉容器-------------- var dropdownPanelHtml = '<div i

给刚接触web前端的IT小白们的学习路线

大家好,我是轻风乍起,本人从事前端8年了,总结了很多学习资料,有时间我会普及一些入门和提升建议,思想提升了,路线明确了自然就好了,于是就整理了下这篇学习路线文章,干货福利内容 在文末↓ 一.HTML.CSS基础.JavaScript语法基础.学完基础后,可以仿照电商网站(例如京东.小米)做首页的布局.二.JavaScript语法进阶.包括:作用域和闭包.this和对象原型等.相信我,JS语法,永远是面试中最重要的部分.三.jQuery.Ajax等.jQuery没有过时,它仍然是前端基础的一部分.

刚接触开发板之烧写裸板程序

使用串口操作开发板的前提是开发板上已经有烧好的程序,因此开发板在没有烧好程序时,应先烧写程序.方法有: 1.使用并口工具烧写:接线(参考百问网JZ2440V2开发板使用手册),使用oflash烧写(速度比较慢),可烧写.bin文件,从新上电观察效果.可烧写u_boot. 2.使用openJTAG烧写,接线,使用oflash烧写(oflash烧写完后,会复位开发板). 3.使用Jlink烧写,请看如何烧写S3C2440裸板程序:JLink只支持烧写Nor Flash,不支持Nand Flash.要

刚接触Joomla,写一下瞎折腾的初感受~

我这几天一直在苦苦寻找一款可以长期投靠的CMS产品,要求的是 1)必须支持命名空间 2)必须OOP + MVC分层 3)丰富分文档和使用群体,至少是出名的,免得哪一天他们解散了 4)-- 一开始我把目光投向了drupal,看了一下中文网络对他的介绍,什么节点存储思路,创造了什么先河.看了之后都睡不着觉了,恨不得开灯起来下载测试下. 不过第二天下载来安装发现,很让自己失望(自己对Drupal的感受的文章 http://blog.csdn.net/default7/article/details/3

刚接触开发板之接口接线工具

ARM开发板本质上就是个小型的计算机系统,因此学习初学开发板可以跟PC电脑做对比. 新买的电脑需装系统(厂家预装或个人自己装)然后才能使用.同样的道理,开发板也必须先烧写软件之后,才能使用.PC电脑可以通过光盘装系统,用键盘.显示器使用:而对于开发板,可以通过JTAG接口烧写软件,使用串口作为输入.输出. PC电脑一般有CPU.内存.硬盘.网卡.并口串口等,对应的,开发板内也有CPU.内存.Flash(相当于PC的硬盘).网卡.串口等. 1.接口接线: 1>并口:用排线连接开发板的JTAG接口和

刚接触开发板之重烧珍整个系统

重烧整个系统:u-boot,内核,文件系统. 1.u-boot的烧写跟烧写裸板程序是一样的 2.烧写内核:开发板设为Nor启动,如果Nand Flash里也有u-boot的话,可以用Nand启动.dnw烧写,tftp烧写. dnw:在菜单里输入k,然后使用dnw.exe发送uImage文件. tftp:tftp 30000000 uImage nand erase kernel nand write,jffs2 30000000 kernel 3.文件系统:dnw烧写,tftp烧写 dnw:在菜

手写js面向对象选项卡插件

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>无缝滚动</title>    <style type="text/css">        body,ul{margin: 0;padding: 0;}        li{list-style: none;}  

基于Twitter Bootstrap 3的jQuery下拉列表插件

metisMenu是一款基于Twitter Bootstrap 3的炫酷jQuery下拉列表插件.该下拉列表插件在原生bootstrup下拉列表的基础上进行了美化,使其支持多级下拉菜单.列表树和鼠标滑过展开等特效. 在线演示:http://www.htmleaf.com/Demo/201502281435.html 下载地址:http://www.htmleaf.com/jQuery/Menu-Navigation/201502281434.html

web前端常用的一些插件

1.jquery 全屏滚动插件 fullPage.js http://www.dowebok.com/demo/2014/77/ 2.页面常用轮播插件   2.http://www.superslide2.com/demo.html  3.常用弹框插件 web前端常用的一些插件