Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自定义插件上的单击功能有问题_Javascript_Jquery_Plugins - Fatal编程技术网

Javascript 自定义插件上的单击功能有问题

Javascript 自定义插件上的单击功能有问题,javascript,jquery,plugins,Javascript,Jquery,Plugins,我试图创建一个插件(不是一个好的工作,但只是想学习),我有麻烦添加一个clic事件 以下是插件: (function($) { $.fn.selectMe = function() { return this.filter(".selectMe").each(function() { var sel = $(this); var listOpt = ""; /* Hide the <se

我试图创建一个插件(不是一个好的工作,但只是想学习),我有麻烦添加一个clic事件

以下是插件:

(function($) {

    $.fn.selectMe = function() {

        return this.filter(".selectMe").each(function() {

            var sel = $(this);
            var listOpt = "";

            /* Hide the <select> tag and create a new element ".selectMe" */
            sel.css("display","none");
            var selName = sel.attr("name");
            sel.after("<div id='"+selName+"' class='selectMe'><div class='selLabel'><span></span><i class='fa fa-lg fa-angle-down pull-right'></i></div><div class='selOptions'></div></div>");

            /* Look for <option> of his parent and add them to the new element*/
            sel.find("option").each(function() {
                var optVal = $(this).val();
                var optText = $(this).text();
                /*listOpt += "{"+optVal+"} ";*/
                listOpt += "<li data-value='"+optVal+"'>"+optText+"</li>";
            });
            $("#"+selName+" .selOptions").html("<ul>"+listOpt+"</ul>");

        });

    };

}( jQuery ));
(函数($){
$.fn.selectMe=函数(){
返回此.filter(“.selectMe”)。每个(函数(){
var sel=$(本);
var listOpt=“”;
/*隐藏标记并创建新元素“.selectMe”*/
选择css(“显示”、“无”);
变量selName=sel.attr(“名称”);
选择。在(“”)之后;
/*查找其父元素的名称并将其添加到新元素中*/
sel.find(“选项”).each(函数(){
var optVal=$(this.val();
var optText=$(this.text();
/*listOpt+=“{”+optVal+“}”*/
listOpt+=“”+optText+“”;
});
$(“#”+selName+“.selpoptions”).html(“
    ”+listOpt+”
”); }); }; }(jQuery));
下面是HTML代码:

<select class="selectMe" name="cars">
    <option value="1">Volvo</option>
    <option value="2">Saab</option>
    <option value="3">Fiat</option>
    <option value="4">Audi</option>
</select>
<select class="selectMe" name="options">
    <option value="1">Opt 1</option>
    <option value="2">Opt 2</option>
    <option value="3">Opt 3</option>
    <option value="4">Opt 4</option>
</select>

沃尔沃汽车
萨博
法令
奥迪
选择1
选择2
选择3
选择4
我必须在jquery插件的哪一部分编写事件以及如何编写?
如何防止双重交互?

在添加新列表后,可以使用
find('li')。单击(fn)


您希望单击什么来触发事件?您是否试图使某些代码在选择某个选项时运行?@ScottKaye First:单击selOptions以显示/隐藏其内容(如单击select标记并切换此选项列表时)。第二:单击selOptions上列表中的一个选项以记录在隐藏的select中,其中一个选项被选中。
$("#"+selName+" .selOptions")
       .html("<ul>"+listOpt+"</ul>") /// your code ends here
       .find('li')
       .click(function(){
             var $li = $(this).addClass('selected');
             $li.siblings().removeClass('selected');
             sel.val( $li.data('value') ); // set value of select
        });
$(".selectMe").selectMe()