javascript - jquery优先执行

标签 javascript jquery

谁能帮我解决这个问题:

$('#n').click(function() {
    $(this).parent().append('<a href="javascript:void()">&nbsp;delete</a>');
    $(this).next().click(function() {
        alert('clicked'); //this not working
    });
    $(this).blur(function() {
        $(this).next().remove();
    });
});

JS Fiddle demo ;问题是 blur() 事件在 click() 事件之前执行。

最佳答案

您可以使用超时将删除操作推迟几毫秒。

示例:http://jsfiddle.net/vkun9/7/

$(this).blur(function() {
            var _this = this;
            setTimeout(function(){$(_this).next().remove();},100);
        });

我还移动了blur附加到点击处理程序之外,因为每次单击元素时它都会添加一个额外的点击处理程序,并将点击处理程序更改为焦点以避免多个 remove正如@dheerosaur 指出的那样,重复点击输入按钮。

所以

$('#n')
    .focus(function() {
        $(this).parent().append('<a href="javascript:void()">&nbsp;delete</a>');
        $(this).next().click(function() {
            alert('clicked'); //this not working
        });
    })
    .blur(function() {
        var _this = this;
        setTimeout(function(){$(_this).next().remove();},100);
    });

不过,您所经历的并不是问题。这是正常行为,因为该元素需要在另一个元素获得焦点之前失去焦点(触发模糊)。

您还应该匹配标签 for带有输入元素 ID 的属性。

关于javascript - jquery优先执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4451115/

相关文章:

javascript - 从多组单选按钮捕获值

javascript - Vue 中的父子交互

javascript - 访问数组内对象的值

jquery - 是否有可能错过$(document).ready?

jquery - Chris Richards 的 jQuery 半分评价

javascript - Redux 测试 - ReferenceError : localStorage is not defined

javascript - 没有 jQuery 的带有延迟鼠标移出的 js 工具提示

javascript - HTML 样式表相互干扰

javascript - 分页和 AJAX 的 Tablesorter 错误

asp.net - 右上角的facebox关闭按钮