在动态内容上使用.delegate或.live和if语句(如果为空,请等等等等)

时间:2012-01-24 19:47:14

标签: jquery jquery-delegate

2折问题。

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

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

所以我试过了:

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

但这不起作用,我认为不会 - 我使用了委托并依靠点击事件,但不确定如何将它们与我想做的一起使用。

1 个答案:

答案 0 :(得分:0)

希望您可以控制填充#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');