我想在一组链接中处理点击事件,因此尝试通过添加如下的辅助类来解决此问题:
<a href="..." class="foo external">Test 1</a>
<a href="..." class="bar external">Test 2</a>
<a href="..." class="car external">Test 3</a>
<a href="..." class="dar">Don't handle this one</a>
然后尝试使用此jquery选择器在链接上选择“外部”类:
$('a.external').click(function(e) {
do something here...
});
然而,这并不像我预期的那样有效。处理这个问题的正确方法是什么?我应该只使用如下的通配符选择器,还是有更好的方法?
$('[class^="someclass"]').click(function(e) {
....
});
答案 0 :(得分:2)
你所拥有的是完全正确的(尽管在你的情况下function(e)
可能没有必要)。
<a href="#1" class="foo external">Test 1</a>
<a href="#2" class="bar external">Test 2</a>
<a href="#3" class="car external">Test 3</a>
<a href="#4" class="dar">Don't handle this one</a>
<script>
$('a.external').click(function(e) {
// will print the href in a javascript alert box
alert( $(this).attr('href') );
});
</script>
据我所知,唯一的可能是你的<script>
实际上高于你的<a>
标签 - 你的脚本无法将点击监听器添加到锚点,因为它们不存在然而。
如果是这样,您需要在$(document).ready( function(){ /* code here */ });
此外,不需要external
类,只需使用“选择所有绝对锚点,而不是链接到我的域名的选择器”选择器:$('a[href^="http://"]').not('[href^="http://mydomain.com"]')
答案 1 :(得分:2)
我猜你的问题是点击链接实际上是让它导航到某个地方?您需要告诉浏览器忽略正常的链接行为。否则,您的点击功能将运行,然后它将立即导航到'href'网址。还要确保这一切都包含在准备好的功能中。
$(function() {
$('a.external').click(function(e) {
// Do whatever
e.preventDefault();
});
});
答案 2 :(得分:1)
我在jsFiddle尝试了它,但它确实有效。
click()
函数有一个额外的括号。
请注意,您的function(e)
有一个紧密的括号,删除它。
你应该最终得到这个:
$('a.external').click(function(e) {
do something here...
});
答案 3 :(得分:0)
$('a.external').click(function() {
jQuery(this).css('background','red');
});