在删除之前检查元素是否被点击

时间:2017-12-06 12:52:27

标签: javascript jquery

我有以下jquery代码:

$(document).on('focusout', '#element_a', function(e){
     $('#element_b').remove();
});
$(document).on('click', '#element_b', function(e){
     // do other stuff here
});

所以基本上,我想删除焦点上的#element_b但是如果它被点击,则在删除之前执行点击功能。问题是焦点在点击之前执行,因此在点击注册时,元素已被删除,因此点击不会注册并且什么也不做。

3 个答案:

答案 0 :(得分:2)

在不了解更多有关此UI的情况下,我们唯一需要处理的是显示的内容。可能有更好的方法来满足您的需求,但根据鲜为人知的情况,您可以添加setTimeout来延迟删除。还要在删除代码检查

的click事件处理程序中添加一个类
var delay = 500;// adjust according to preference. Can even set it to zero

$(document).on('focusout', '#element_a', function(e) {
  setTimeout(function() {
    // only remove if it doesn't have selected class
    $('#element_b').not('.selected').remove();
  }, delay);
});
$(document).on('click', '#element_b', function(e) {
  $(this).addClass('selected');
  // do other stuff here
});

答案 1 :(得分:0)

不确定是否要删除元素a或b。只需触发单击事件,然后删除元素。

with open('test.xml', 'r+') as f:
lines = f.readlines()
f.seek(0)
f.truncate()
for line in lines:
    if '<heading>' or '</heading>' in line :
            line = line.replace('<heading>', '<-- <heading>').replace('</heading>', '</heading> -->')
    f.write(line)

答案 2 :(得分:-2)

DEMO 就在这里

最好使用mouseleave而不是焦点。

JS

$(document).ready(function(){
  $('#click').click(function(){
    alert('im clicked');
  });
  $('#click').mouseleave(function(){
    alert('im focus out');
  });
});