我已经搜索了高低,以获得答案。我知道有一种方法可以在触发点击事件时停止传播,但有一种方法可以在传播后运行点击事件代码。
我问的原因是,我有一个在服务器上动态构建的telerik RadTabStrip。在每个标签页中都有一个地图,上面有标记,指示人们在办公室的位置。我需要在用户单击选项卡时获取第一个标记的句柄,但我遇到的问题是标记元素不是DOM的一部分,直到 点击传播之后。
$('.tab').click(function(e){
// e.continuePropagation(); ?? or something?
var markerTop = $('.cardiff').offSet().top; // Is always 0 even though the marker is 243 px from the top
}):
我没有使用telerik客户端api的原因是因为我在几个JQuery AJAX success
函数中,并且不确定它的行为方式。
修改 我已经使用另一个AJAX调用解决了我的问题,但我仍然想知道是否有一种方法可以在click事件中的代码之前运行默认值
答案 0 :(得分:1)
- > http://api.jquery.com/live/
答案 1 :(得分:1)
试试这个:
$('.tab').click(function(e){
// e.continuePropagation(); ?? or something?
setTimeout(function(){var markerTop = $('.cardiff').offSet().top;},0);
}):
setTimeout调用中的函数将在当前线程执行后调用,这似乎就是你想要的。
答案 2 :(得分:0)
如果通过单击选项卡上的某些内容中的AJAX,或者其中包含标记,则需要在该代码中进行回调,而不是在选项卡的单击事件中。
我无法想办法获取点击事件回调中尚未成为DOM一部分的内容。
查看TabStrip文档,您只想确实使用OnClientTabSelected事件?您提到您正在进行一些自定义Ajax调用,但是这些调用可能会在预先构建的telerik事件中移动吗?
答案 3 :(得分:0)
因此,如果您需要在元素进入DOM时触发事件(我猜这是您的问题,因为您的标记在点击事件后进入DOM),您可以查看livequery插件。这是一个旧的插件,但它会让你在创建后立即附加和操纵它们(这样你就可以获得它们的位置!)