当用户单击时,添加一个项目在父元素上添加一个新项目,然后单击该项目textarea会提示编辑其文本。
HTML DOM/JS Fiddle
<div class="editor"></div>
<a href="#" class="additem">add an item</a>
<div class="options">
<br><b>Item Text</b> <br>
<textarea class="itemtext"></textarea>
</div>
JS(jQuery的)/ JS Fiddle
var $item = "<div class='item'>Text here...</div>",
$itembtn = $('a.additem'),
$editor = $('div.editor'),
$opt = $('div.options');
$itembtn.on('click', function(e){
e.preventDefault();
$editor.show();
$editor.append($item);
});
$($editor).on('click', 'div.item', function(){
var $this = $(this);
$opt.show();
$opt.find('textarea').val($this.text());
$opt.find('textarea').on('keyup', function(){
$this.text($opt.find('textarea').val());
});
});
$($editor).on('blur', 'div.item', function(){
$opt.hide();
});
但似乎$(这)不是指向一个单一的点击的元素,取而代之的则是指向所有点击/选择的子元素!
而且模糊事件不起作用!
我怎么能指出$这只有一个选定的项目,但不是所有的点击项目?
你模糊的事件不工作,因为你将其连接到错误的元素。 – Stryner
纯粹是为了替代方案,而不是解除绑定和绑定keyup处理程序,你可以做跟踪'active'div的变量:http://jsfiddle.net/67ndb0u8/1/不是更好或更糟,主要是一个仍然有小提琴在背景窗口中打开的情况;) –
@ Me.Name很聪明8) – rakibtg