Javascript JQuery-将.on与元素插入一起使用
我有一个为特定对象创建工具提示的函数。目前,我在ajax插入后运行一个工具提示函数来创建和附加新的工具提示对象。我很好奇是否有一种方法可以使用.on()在插入时自动运行tooltip函数,而不是手动运行它 例如:Javascript JQuery-将.on与元素插入一起使用,javascript,jquery,Javascript,Jquery,我有一个为特定对象创建工具提示的函数。目前,我在ajax插入后运行一个工具提示函数来创建和附加新的工具提示对象。我很好奇是否有一种方法可以使用.on()在插入时自动运行tooltip函数,而不是手动运行它 例如: $('[title]').on('inserted', function(){ tooltip(this); }); 我读了一些书,看起来自定义触发器可能是一个不错的选择,但我希望它能像这样存在:)这不是您想要的响应,但我不会直接在元素上附加工具提示。相反,我将使用一个
$('[title]').on('inserted', function(){
tooltip(this);
});
我读了一些书,看起来自定义触发器可能是一个不错的选择,但我希望它能像这样存在:)这不是您想要的响应,但我不会直接在元素上附加工具提示。相反,我将使用一个类来表示我希望工具提示显示在鼠标上方的类,并以以下方式使用
.on()
事件处理程序:
$('body').on('mouseover','.tooltip',function() {
// show tooltip
console.log($(this).data('tooltip'));
return false;
}).on('mouseout','.tooltip',function() {
// hide tooltip
return false;
});
因此,无论您添加到主体中的内容(不一定是直接子项)都将触发此事件处理程序
我可能只是创建一个附加函数,将工具提示数据与类一起分配给每个元素
$.fn.extend({
tooltip:function(text) {
text = text || '';
return $(this).each(function() {
$(this).data('tooltip',text).addClass('tooltip');
});
}
});
$('#someID').tooltip("Click me!");
$('button').tooltip("I'm a button");
以下是符合请求的伪代码
$(document).ready(function() {
$('body').on('added','*',function() {
console.log($(this),'has been added');
});
$('body').append('<div>This is the first div</div>');
});
(function($) {
fncs = {
append:$.fn.append,
appendTo:$.fn.appendTo
// etc.
}
// we're assigning the original functions in this
// object to be executed (applied) later
$.fn.append = function() {
fncs.append.apply(this,arguments);
$(this).children().last().trigger('added');
return $(this);
}
$.fn.appendTo = function() {
fncs.appendTo.apply(this,arguments);
return $(this);
// no need to trigger because this function calls the one
// above for some reason, and it's taking care of the
// triggering the right element(s I think)
}
})(jQuery);
$(文档).ready(函数(){
$('body')。在('added','*',function()上{
log($(this),“已添加”);
});
$('body').append('这是第一个div');
});
(函数($){
fncs={
追加:$.fn.append,
appendTo:$.fn.appendTo
//等等。
}
//我们在这里分配原始函数
//对象将在以后执行(应用)
$.fn.append=函数(){
append.apply(这是参数);
$(this.children().last().trigger('added');
返回美元(此);
}
$.fn.appendTo=函数(){
appendTo.apply(这是参数);
返回美元(此);
//无需触发,因为此函数调用
//出于某种原因,它正在照顾
//触发正确的元素(我认为)
}
})(jQuery);
好主意,但确实不是我想要的答案。工具提示只是一个例子,我经常遇到这个问题,很好奇是否有好的解决方案您是否考虑过重写操纵函数并触发自定义事件处理程序,如“added”?这是一个不错的解决方案。如果将来它是jquery中内置的东西,那就太棒了,但现在就可以了。谢谢您可能需要浏览中用于DOM操作的所有函数列表。我也希望在功能版本中实现。