在没有元素的情况下调用jQuery函数

时间:2010-05-17 19:04:54

标签: javascript jquery function

所以,我非常广泛地使用jQuery,并且我非常了解下面的“正确”方法,但有时候我想以更通用的方式解决它。我会解释一下。

所以,我可能有一个链接,如:<a href='menu' class='popup'>Show menu</a>。现在,我有一个jQuery函数,点击所有带有href属性的a.popup并显示<div id='menu'></div>项(在本例中)。如果找不到具有该ID的DOM项,它也会处理URL。

这里没问题。但是,有时我对coe可能没有相同的控制权,我可以通过这种方式创建一个可选择的目标。要么是因为代码不是由我创建的,要么是因为它是通过一系列函数创建的,这些函数都需要一个我不会做的巨大的ovrhaul。

所以,我不时会想要这段代码:

<a href="javascript:popup('menu')">Show menu</a>

在这种情况下,我只能为链接提交标签和HREF。没有课,也没有。

这里的问题是函数popup()不知道调用它的是什么元素,并且在大多数情况下这对我来说不是问题,因为我只需要知道调用时鼠标光标在哪里。

但在某些情况下,我使用别人的jQuery函数,比如qTip或其他东西。所以我还是要关掉qTip();单击运行此JS函数的链接时,但我将其附加到哪个以显示它?我不能只是runt $()。qTip();因为这意味着$(this)和“this”在函数内部未定义。

那我该怎么办?有什么想法吗?

3 个答案:

答案 0 :(得分:1)

无论如何,您是否将javascript方法更改为javascript:popup('menu', this);?我已成功多次使用此方法。

答案 1 :(得分:1)

请尝试引用this来引用已点击的链接,而不是引用“$('a:focus')”。

这是一个快速的,因为@Crescent Fresh会添加,脏(☺)样本:

<body>
<p><a href="javascript:popup('menu')">Show popup()</a></p>
<div id="menu" style="display:none">Today's menu</div>

<script type="text/javascript">
function popup(elm) {
    $('#' + elm).show();
    alert( $('a:focus').text() )
}
</script>
</body>

我只尝试了“:focus”,但IE7返回了太多内容。我在FF 3.6.3,IE7,Chrome 4.1.249.1064(所有在Windows上)进行了测试,看起来没问题,但我现在看到了(当我即将点击“发布你的答案”时)这取决于浏览器的本机支持对于querySelectorAll - 请参阅此jQuery论坛帖子“:focus selector filter?”和jQuery.expr entry in the jQuery Source Viewer(看来保罗的想法没有实现)。

答案 2 :(得分:1)

怎么样

<a href="javascript:popup(event, 'menu')">Show menu</a>

获得事件对象后,您几乎可以对其进行任何操作。