我有以下jquery代码:
$(document).on('focusout', '#element_a', function(e){
$('#element_b').remove();
});
$(document).on('click', '#element_b', function(e){
// do other stuff here
});
所以基本上,我想删除焦点上的#element_b
但是如果它被点击,则在删除之前执行点击功能。问题是焦点在点击之前执行,因此在点击注册时,元素已被删除,因此点击不会注册并且什么也不做。
答案 0 :(得分:2)
在不了解更多有关此UI的情况下,我们唯一需要处理的是显示的内容。可能有更好的方法来满足您的需求,但根据鲜为人知的情况,您可以添加setTimeout
来延迟删除。还要在删除代码检查
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');
});
});