所以,我非常广泛地使用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”在函数内部未定义。
那我该怎么办?有什么想法吗?
答案 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>
获得事件对象后,您几乎可以对其进行任何操作。