jQuery单击目标选择器

时间:2010-12-05 19:36:07

标签: jquery

我在页面中有以下HTML:

<a href="javascript:void(0)" class="move-next"><img src="/Content/images/small-next-arrow.png" height="16" width="16" alt="Next status arrow" title="Progress to next status"/></a></div>

我有以下javascript尝试处理点击事件:

function InitProgressionSelectors() {
$(".move-next").click(function() {
    moveNext(this);
});

$(".move-previous").click(function() {
    movePrevious(this);
});
}

function moveNext(target) {
    var sourceContainer = target.parent("td");
    var targetContainer = sourceContainer.next("td");
}

我显然遗漏了一些东西,因为moveNext函数中的“target”正在返回一个HTMLAnchorElement,但是当我尝试将其包装起来,或者以某种方式将其作为jQuery对象访问时,我可以尝试获取它的句柄父容器,我收到错误。

对$(target)的引用返回null。如何获取对作为jQuery对象的目标的引用,以便我可以在该上下文中使用它?我错过了什么?

感谢。

3 个答案:

答案 0 :(得分:3)

您需要传递jquery对象

$(".move-previous").click(function() {
    movePrevious($(this));
});

答案 1 :(得分:1)

正如我在下面的评论中所提到的,使用$(target)不起作用。但是,正如在上面原始问题的评论中可以看到的那样,解决方案是实际传递$(this)作为参数。一旦我这样做,target.parent解析到预期的节点,并且工作。


你可以尝试使用dollor

$(目标)

var sourceContainer = $(target).parent("td");

答案 2 :(得分:0)

另一种方法是通过引用传递函数:

$(".move-next").click(moveNext);

然后您可以按预期使用选择器:

function moveNext() {
    var sourceContainer = $(this).parent("td");
    var targetContainer = sourceContainer.next("td");
}

请注意将函数传递给点击处理程序时缺少括号。