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