Javascript事件操作

Javascript event manipulating

本文关键字:操作 事件 Javascript      更新时间:2023-09-26

我将用jquery制作一个就地编辑器。它通过单击要编辑的文本来工作,并用输入替换其中的内容。在当前具有选择标记的情况下。

除了使用<a>标签外,它工作正常。。。如果你点击<a>标签,它会确认你要做什么。你可以接受编辑模式或取消它。

如果接受编辑模式,则会将<a>的内容更改为<select>。问题出现在这一点之后:如果单击select,则父标记(<a>)将引发新的页面加载。

我试图在<a>上绑定一个带有错误返回的点击事件,但在这种情况下,鼠标无法进行选择。

我认为解决这个问题的另一种方法是将单击事件绑定到<select>,并以某种方式操纵事件对象。。。

如何做到这一点?或者这是一种错误的做法?

更新:基本方法是无效的(a中的select),但我找到了一个解决方案:删除href参数,就不需要丑陋的事件黑客攻击,而这在FF中根本不起作用。(类似的问题及其解释:在超链接问题中选择标签)

不要更改内容,要更改元素。将a元素存储在某个位置,将其替换为select,然后在完成后将其重新替换。这样你就不必为链接触发而烦恼了。

function ask ( e )
{
   e.preventDefault (); //prevents default browser action
   //do whatever
}
element.addEventListener ("click", ask);

为什么要操作事件对象?难道不能让a-event返回false,然后为select标记设置另一个事件处理程序吗?

<select>封装在<a>标记中是无效的HTML。此外,劫持<a>的点击事件处理程序来触发select的事件处理程序被认为是一种丑陋的黑客攻击。我建议您在DOM中将<select>放在<a>之后,并在编辑期间临时隐藏链接。

我会尝试使用jQuery的DOM操作方法。例如:$('#my_select').detach().insertAfter('#my_link');

这是一个简洁的演示

(示例:)

$('a').click(function(event) {
     event.preventDefault();   
    $('#edit').show(500);
});

基本方法是无效的(a中的select),但我找到了一个解决方案:删除href参数,您就不需要丑陋的事件破解,而这在FF中甚至都不起作用。(类似的问题及其解释:在超链接问题中选择标签)