【发布时间】:2011-07-21 13:33:48
【问题描述】:
我想通过click 或hover 传递一个变量来导致此方法。
现在,它默认点击。
var defaults = {
xOffset: 10,
yOffset: 25,
tooltipId: "easyTooltip",
clickRemove: true,
content: "",
useElement: "",
clickAppear: true
};
var options = $.extend(defaults, options);
var content;
$(this).click(function(e){
$("#" + options.tooltipId).remove();
content = (options.content != "") ? options.content : title;
content = (options.useElement != "") ? $("#" + options.useElement).html() : content;
$(this).attr("title","");
if (content != "" && content != undefined){
$("body").append("<div id='"+ options.tooltipId +"'>"+ content +"</div>");
$("#" + options.tooltipId)
.css("position","absolute")
.css("top",(e.pageY - options.yOffset) + "px")
.css("left",(e.pageX + options.xOffset) + "px")
.css("display","none")
.fadeIn("fast");
return false;
}
},
我想要它,以便我可以传递 clickAppear = false 的方法调用,在这种情况下,它会另外生成:
$(this).hover(function(e){
...
我想知道是否有一种优雅的方法可以在保持块 DRY 的同时编写此条件,而不是在条件中复制和粘贴整个方法两次(这似乎无论如何都不起作用)。
有什么想法吗?
【问题讨论】:
-
为什么不将所有代码放在一个函数中,并将该函数设置为
.click和.hover的回调? -
听起来很聪明,我只是不确定你指的是什么。
-
我同意马特所说的。 .click 和 .hover 不必采用匿名函数。只需创建一个命名函数,然后执行 if clickappear 和适当的绑定。
-
上下文中的
this是什么?不应该是"a"吗? -
@Matt:把它作为一个答案,你就得到了我的 +1。我会,但我觉得我在偷你的答案。 :)
标签: javascript jquery plugins tooltip