Javascript 单击事件不';不能触发预期效果

Javascript 单击事件不';不能触发预期效果,javascript,jquery,html,Javascript,Jquery,Html,我有以下代码: jQuery.fn.extend({ SelectBox: function(options) { return this.each(function() { new jQuery.SelectBox(this, options); }); } }); jQuery.SelectBox = function(selectobj, options) { var opt = options || {}

我有以下代码:

jQuery.fn.extend({
    SelectBox: function(options) {
        return this.each(function() {
            new jQuery.SelectBox(this, options);
        });
    }
});

jQuery.SelectBox = function(selectobj, options) {

    var opt = options || {};
    opt.inputClass = opt.inputClass || "inputClass";
    opt.containerClass = opt.containerClass || "containerClass";

    var inFocus = false;

    var $select = $(selectobj);
    var $container = setupContainer(opt);
    var $input = setupInput(opt);

    $select.hide();
    hideMe();

    $input
    .click(function(){
        if (!inFocus) {
            showMe();
        } else {
            hideMe();
        }
    })
    .keydown(function(event) {     
        switch(event.keyCode) {
            case 27:
              hideMe();
            break;
        }
    })
    .blur(function() {
        if ($container.not(':visible')) {
            hideMe();
        }
    });

    function showMe() { 
        $container.show();
        inFocus = true;
    }

    function hideMe() { 
        $container.hide();
        inFocus = false;
    }

    function setupContainer(options){
        $container = $("." + options.containerClass);
        $input = $("." + options.inputClass);

        var first = false;
        var li = "";

        $select.find('option').each(function(){
            if($(this).is(':selected')){
                $input.find('span').text($(this).text());
                first = true;
            }
            //var $li = $container.find('ul').append('<li>' + $(this).text() + '</li>');
            var li = document.createElement('li');
            li.innerHTML = $(this).text();
            $container.find('ul').append(li);
            $(li).click(function(event){
                $(li).remove();
            });
        });

        return $container;
    }

    function setupInput(options){
        $input = $("." + options.inputClass);
        $input.attr('tabindex', '0');
        return $input;
    }

};
jQuery.fn.extend({
选择框:功能(选项){
返回此值。每个(函数(){
新建jQuery.SelectBox(此选项);
});
}
});
jQuery.SelectBox=函数(selectobj,选项){
var opt=options |{};
opt.inputClass=opt.inputClass | |“inputClass”;
opt.containerClass=opt.containerClass | |“containerClass”;
var-inFocus=false;
变量$select=$(selectobj);
var$container=setupContainer(opt);
var$input=设置输入(opt);
$select.hide();
hideMe();
$input
。单击(函数(){
如果(!inFocus){
showMe();
}否则{
hideMe();
}
})
.keydown(函数(事件){
开关(event.keyCode){
案例27:
hideMe();
打破
}
})
.blur(函数(){
if($container.not(':visible')){
hideMe();
}
});
函数showMe(){
$container.show();
inFocus=true;
}
函数hideMe(){
$container.hide();
inFocus=false;
}
功能设置容器(选项){
$container=$(“+options.container类);
$input=$(“+options.inputClass);
var first=假;
var li=“”;
$select.find('option')。每个(函数(){
如果($(this).is(':selected')){
$input.find('span').text($(this.text());
第一个=正确;
}
//var$li=$container.find('ul').append('
  • '+$(this.text()+'
  • '); var li=document.createElement('li'); li.innerHTML=$(this.text(); $container.find('ul').append(li); $(li)。单击(函数(事件){ $(li).删除(); }); }); 退回$container; } 功能设置输入(选项){ $input=$(“+options.inputClass); $input.attr('tabindex','0'); 返回$input; } };
    在这段代码中,“选择”我选择隐藏,并替换为列表。现在,我想点击一些“李”,并删除“李”


    但是,我点击了我创建的“li”,什么也没发生。为什么?当我单击“li”时,如何删除或执行其他操作?

    我认为您的
    $input周围需要括号。单击
    使其看起来像
    $(“input”)。单击(function(){})

    -希望这有帮助

    $(li).click(function(event){
       $(li).remove();
    });
    
    应该是

    $(li).click(function(event){
       $(this).remove();
    });
    

    这就是它的工作原理:

    ...
    var $li = $('<li />')
        .html($(this).text())
        .click(function(){
            $(this).remove();
        });
    
    $container.find('ul').append($li);
    ...
    
    。。。
    变量$li=$(“
  • ”) .html($(this).text()) 。单击(函数(){ $(this.remove(); }); $container.find('ul').append($li); ...
  • 我相信这里还有更多的东西。我测试了一个类似的东西,它似乎工作得很好。
    li
    s是否附加到
    ul