【问题标题】:jQuery function calls without connection to DOM element or with connection to a temporary DOM element没有连接到 DOM 元素或连接到临时 DOM 元素的 jQuery 函数调用
【发布时间】:2012-10-21 02:21:04
【问题描述】:

我有以下 jQuery 摘录:

Tselector.mouseup = function() {
     var sel =  getSelectionCharOffsetsWithin(document.getElementById("base"));
     //...
}

每当我在带有id=basediv 标签中选择文本时,释放鼠标按钮时都会触发上述功能。 getSelectionCharOffsetsWithin(element) 是一种解析选择的方法(我需要它来执行进一步的步骤)。

我现在要做的是弹出一个工具提示,显示我可以对选择进行哪些操作。 (对于熟悉iOS的人来说,它类似于我在Web浏览器中选择文本时的功能。)

问题是 jQuery 需要一个 DOM 元素来执行操作。 例如使用tipsy时:

$('#foo').tipsy();

工具提示与具有id=foodiv 标记相连。

在触发mouseup 函数时,我的所选文本没有这样的元素,因此我无法将我的选择与工具提示联系起来。

是否有可能直接调用 jQuery 函数而不连接到 DOM 元素(例如,将工具提示与鼠标位置连接)? 如果没有,是否可以使用在我的事件上创建和连接但未永久存储在 HTML 代码中的临时 DOM 元素做一个解决方法?

这里有一个小提琴来证明这一点: http://jsfiddle.net/noplacetoh1de/bYNmb/

感谢您的建议!

【问题讨论】:

  • 必须有一个对象可以连接,即使是文档或窗口。
  • 假设我想将它连接到我的鼠标位置,这可能吗?我将如何用 jQuery 来定义它?
  • 鼠标不是节点或对象,它不能绑定事件。它只是与浏览器交互,然后浏览器解释点击或移动发生的位置并适当地触发事件。如果您希望每次鼠标按钮从向下变为向上时触发事件,请将该事件绑定到文档。

标签: javascript jquery tipsy


【解决方案1】:

我认为这是可能的。使用您的 sel 变量创建一个临时跨度,首先拆分 HTML。使用 substr() (http://www.w3schools.com/jsref/jsref_substr.asp)。然后在您的选择周围放置一个跨度。选择隐藏时,你应该得到跨度的innerhtml,但它再次使用 sel 变量来回到它的位置,然后摧毁它。

我认为这在 mootools 顺便说一句要容易得多。也许你可以设置一个我们可以继续的小提琴?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多