我准备使用jquery创建一个inplace编辑器。它的工作原理是单击要编辑的文本,然后用输入替换它的内容。在当前情况下使用选择标记。
除<a>
标记外,它的工作正常...如果您点击<a>
标记,则会确认您要执行的操作。您可以接受编辑模式或取消它。
如果您接受编辑模式,则会使用<a>
更改<select>
的内容。问题出现在这一点之后:如果单击选择父标记(<a>
),则会激活新的页面加载。
我尝试使用false返回绑定<a>
上的click事件,但在这种情况下,select不会通过鼠标工作。
解决这个问题的另一种方法我认为是将click事件绑定到<select>
并以某种方式操纵事件对象......
怎么做?或者这是一种错误的方法吗?
更新:
基本方法无效(select
内部a
)但我找到了一个解决方案:删除href
参数,您不需要丑陋的事件黑客甚至在FF中无效。
(类似的问题及其解释:Select tag inside hyperlink problem)
答案 0 :(得分:2)
不要更改内容,更改元素。将a
元素存储在某处,将其替换为select
,然后在完成后再替换。通过这种方式,您无需担心链接触发。
答案 1 :(得分:1)
function ask ( e )
{
e.preventDefault (); //prevents default browser action
//do whatever
}
element.addEventListener ("click", ask);
答案 2 :(得分:0)
为什么要操纵事件对象?你不能只留下一个事件来返回false并将另一个事件处理程序设置为select-tag吗?
答案 3 :(得分:0)
这是一个整洁的demonstration
(来自示例:)
$('a').click(function(event) {
event.preventDefault();
$('#edit').show(500);
});
答案 4 :(得分:0)
将<select>
标记包装在<a>
标记中无效HTML。此外,劫持<a>
的click事件处理程序以激活select的一个被认为是一个丑陋的黑客。我建议您将<select>
放在DOM中的<a>
之后,并在编辑期间暂时隐藏链接。
我要尝试的一件事是使用jQuery的DOM操作方法。例如:
$('#my_select').detach().insertAfter('#my_link');
答案 5 :(得分:0)
基本方法无效(select
内部a
)但我找到了一个解决方案:删除href
参数,你不需要丑陋的事件黑客甚至无法工作在FF。
(类似的问题及其解释:Select tag inside hyperlink problem)