here is my case:
<html>
<body>
<head>
...
<script>
$(function(){
$('.do-tip').qtip({
content: 'This is a tip of active hovered element',
show: 'mouseover',
hide: 'mouseout',
})
});
</script>
</head>
<body>
<a href="http://www.google.com" class="do-tip">google</a>
<input type="button" value="load div by ajax" />
<div> <!-- this div loaded by ajax -->
<div>
<a href="http://www.yahoo.com" class="do-tip">yahoo</a> <!-- HOW TO HERE, run the existing script only for this part, JQUERY UNCLE must have a solution-->
</body>
</html>
any ideas?
3 回答
虽然尚不清楚您要做什么,但我会尝试我的 MagicGuess 工具并为您提供答案。
所以,你需要
a) 在文件加载时执行一些功能;此功能.do-tip
对页面上的所有元素都有作用
b) 在通过 AJAX 加载某些内容后执行相同的功能,但现在这需要使用另一组元素进行操作。
真的吗?如果是这样,这就是我会做的:
function doEverythingINeed(selector) {
$(selector).qtip({
content: 'This is a tip of active hovered element',
show: 'mouseover',
hide: 'mouseout',
})
}
$(function() {
doEverythingINeed('.do-tip');
});
doEverythingINeed
并在通过 AJAX 加载 HTML 后使用另一个选择器调用。如果你使用$.ajax()
函数,那么你应该这样做
$.ajax({
//parameters
success: function() {
//some other actions if needed
doEverythingINeed('your selector');
//more actions if needed
}
});
希望有帮助!
以防万一它对其他人有帮助,我有一个非常相似的用例并使用 jQuery 的 .live() 事件绑定器解决了它 - 比我试图通过重新处理所有 $('document').ready 来设计的解决方案要简单得多() 事件。
用例:一个页面上有很多链接(HTML a 标签)。在 $('document').ready() 上,我将相关链接的 .click() 事件绑定到调用一些 .ajax() 的函数,该函数检索更多相同类型的链接并将其 HTML 注入页面。问题是,新链接没有绑定。单击新链接并没有像应有的那样触发 .ajax() 代码。
在注入 HTML 后,我花了很长时间尝试重新触发 ready 事件,然后意识到用 .live('click) 而不是 .click() 绑定事件会产生完全相同的结果,而额外的代码为零。
顺便说一句,其他人已经对其他地方的原始问题给出了非常好的解决方案 - 见问题2238030
您可以在 ready 函数中构建模块执行控制器,并在注入 HTML 后重新运行这些函数。像这样的东西: