我真的需要你的帮助。
如何从按钮单击(重命名)移动到启动我的重命名功能到UL LI内的单击事件。我想将$('button').click(fn);
移动到LI,其价值是'重命名'。当我离开按钮并创建单独的右键单击菜单时,触发我的重命名功能的click事件来自LI点击非常重要。
这是一个小提琴:http://jsfiddle.net/29objbzx/1/
附上预期结果的图片:
有问题的代码:
$(function(){
$('#refdocs_list li').click(fn);
$('button').click(fn);
function fn(e){
var el = $('#refdocs_list li.selected');
if(e.target.type != "button"){
el.removeClass('selected');
$(e.target).addClass('selected');
}else{
var txt = el.text();
var newEl = $("<input id='rename_refdoc'>");
newEl.blur(function(){
el.html(newEl.val());
});
newEl.val(txt);
el.html(newEl);
newEl.focus().select();
}
}
})();
我在想:
$('#right-click-menu li:eq(5)').click(function(e) {
fn(e);
});
但它也没有用。
答案 0 :(得分:0)
编辑:只需将按钮处理程序添加到li并更改条件以检查ID而不是按钮目标。见下面的代码。
注意:已删除HTML中的onclick
功能,并将ID属性添加为renameLI
DEMO: http://jsfiddle.net/29objbzx/2/
$('#renameLI').click(fn);
$('#refdocs_list li').click(fn);
function fn(e) {
var el = $('#refdocs_list li.selected');
if (e.target.id != "renameLI") {
el.removeClass('selected');
$(e.target).addClass('selected');
} else {
var txt = el.text();
var newEl = $("<input id='rename_refdoc'>");
newEl.blur(function() {
el.html(newEl.val());
});
newEl.val(txt);
el.html(newEl);
newEl.focus().select();
}
}
* {
font-family: Segoe UI;
font-size: 9pt;
}
#refdocs {
border: 0;
width: 100%;
height: auto;
padding-left: 2px;
}
#refdocs_main {
border-top: 1px solid rgb(170, 170, 170);
border-left: 1px solid rgb(170, 170, 170);
border-right: 1px solid rgb(170, 170, 170);
border-bottom: 1px solid rgb(170, 170, 170);
width: 179px;
overflow: hidden;
margin-bottom: 2px;
margin-top: 1px;
}
#refdocs_main:hover {
border-color: rgb(128, 128, 128);
}
#refdocs_container {
border-bottom: 1px solid rgb(170, 170, 170);
height: 20px;
}
#refdocs_wrapper {
height: 116px;
overflow-y: scroll;
overflow-x: hidden;
}
#refdocs_list {
width: 100%;
}
#refdocs_list ul {
margin: 0;
padding: 0px;
list-style-type: none;
}
#refdocs_list li {
cursor: default;
padding: 2px;
}
#refdocs_main:hover,
#refdocs_main:hover #refdocs_container {
border-color: rgb(128, 128, 128);
}
.selected {
background: rgb(228, 228, 228);
}
#rename_refdoc {
border: 0;
width: 100%;
padding: 0px;
margin: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button type="button">rename</button>
<div id="refdocs_main">
<div id="refdocs_container">
<input type="text" id="refdocs" />
</div>
<div id="refdocs_wrapper">
<div id="refdocs_list">
<ul>
<li>red</li>
<li>green</li>
<li>blue</li>
<li>yellow</li>
<li>orange</li>
<li>purple</li>
</ul>
</div>
</div>
</div>
<br>
<br>
<div id="right-click-menu">
<ul>
<li onclick="refdocs_copy()">Copy</li>
<li onclick="refdocs_paste()">Paste</li>
<li onclick="refdocs_add()">Add</li>
<li onclick="refdocs_delete()">Cut</li>
<li onclick="refdocs_clear()">Clear list</li>
<li id="renameLI">Rename</li>
</ul>
</div>
修改:更新了您的代码以使用相同的功能。见下文,
<强> DEMO 强>
LI
<强>代码:强>
$(function () {
$('#refdocs_list li').click(function (e) {
fn(e);
});
$('button').click(fn);
function fn(e) {
var el = $('#refdocs_list li.selected');
if (e.target.type != "button") {
el.removeClass('selected');
$(e.target).addClass('selected');
}
el = $('#refdocs_list li.selected');
var txt = el.text();
var newEl = $("<input id='rename_refdoc'>");
newEl.blur(function () {
el.html(newEl.val());
});
newEl.val(txt);
el.html(newEl);
newEl.focus().select();
}
});
如果我理解正确,您想要点击LI
重命名列表,就像点击重命名按钮一样。
$('#refdocs_list li').click(function (e) {
fn(e);
$('button').click();
});