Jquery 在动态内容上使用.delegate或.live with if语句(如果为空,请诸如此类)

Jquery 在动态内容上使用.delegate或.live with if语句(如果为空,请诸如此类),jquery,jquery-delegate,Jquery,Jquery Delegate,双重问题 如果另一个元素(B)为空,我需要隐藏一个元素(A),如果B中有元素,则显示A 我需要在动态加载的元素上执行此操作 所以我试着: $(document).ready(function() { if ($('#mapDirections').html().trim()) { $('#mapReset').hide(); } else { $('#mapReset').show(); } }); 但这不起作用,我也不认为会起作用——我使用了委托和点击直播

双重问题

如果另一个元素(B)为空,我需要隐藏一个元素(A),如果B中有元素,则显示A

我需要在动态加载的元素上执行此操作

所以我试着:

$(document).ready(function() {
  if ($('#mapDirections').html().trim()) {
    $('#mapReset').hide();
  }
  else
  {
    $('#mapReset').show();
  }
});

但这不起作用,我也不认为会起作用——我使用了委托和点击直播事件,但不确定如何将它们与我想做的事情结合使用。

希望您能够控制填充#mapDirections的JavaScript。然后,您应该在数据到达后立即实现回调行为

如果您没有该控件,并且新数据是随机的,那么您需要确定轮询节点以获取新内容的时间间隔

例如,假设调用onNewMapDirections()以响应DOM中的某个事件:

function onNewMapDirections(newData) {
  $('#mapDirections').html(newData);
  //Add callback here
}
这可以通过绑定和触发文档上的自定义事件处理程序轻松完成:

//Called when new directions are ready to add to DOM
function onNewMapDirections(newData) {
  $('#mapDirections').html(newData);
  $(document).trigger('checkMapDirections');
}

//Called in response to dispatched event
function onMapDirectionsUpdated(evt) {
  if ($('#mapDirections').html().trim()) $('#mapReset').hide();
  else  $('#mapReset').show();
}

//Binds event
$(document).ready(function() {
  $(document).bind('checkMapDirections', onMapDirectionsUpdated);
});
如果不能在新映射数据调用时立即嵌入回调,则仍然可以使用事件逻辑并实现一个定期调用的计时器

$(document).trigger('checkMapDirections');

这对动态HTML不起作用,因为在应用此函数时,选择器不存在要查找的元素。@Tetsujinnoni-好的,元素#mapDirections存在-但为空。当元素被附加到它之后,我想显示其他元素,如果它是空的,我想隐藏元素是您负责添加到它的代码吗?如果是这样,为什么不在该点添加适当的代码呢?按照@JeffB,将显示/隐藏代码移动到添加错误消息的位置。或者将其包装在函数中,并在附加到#mapDirections后调用该函数。