Jquery hasClass + If Statement

时间:2011-05-18 21:42:46

标签: jquery if-statement

我希望以下loadContent函数仅在单击的链接具有某个类时才加载目标div。这是我到目前为止所提出的:

function loadContent(targetDIV, sourceURL) {
if ( $(this).hasClass("done") ) {
$(""+targetDIV+"").load(""+sourceURL+"");
}
}

<a href="javascript:loadContent('#nav', 'news.php');" class="done">News</a>

该函数在没有if语句的情况下工作,但我似乎无法让hasClass与if - any思路一起工作?谢谢!

3 个答案:

答案 0 :(得分:3)

它不起作用的原因是因为函数中对“this”的引用实际上并不是指链接。将链接本身传递给函数以获得更好的结果:

function loadContent(linkObj, targetDIV, sourceURL) {
    if ( $(linkObj).hasClass("done") ) {
        $(""+targetDIV+"").load(""+sourceURL+"");
    }
}

<a href="javascript:loadContent(this, '#nav', 'news.php');" class="done">News</a>

答案 1 :(得分:1)

将其更改为以下内容,它应该有效:

<a href="#" onclick="loadContent.call(this, '#nav', 'news.php');" class="done">News</a>

使用.call(),您可以将this函数中loadContent的值设置为当前元素。

因为我们使用了onclick,所以内联处理程序中的this会为您提供传递的引用。

答案 2 :(得分:0)

您可以使用jquery click()方法绑定点击,而不是使用href =“javascript:...”吗?

我不确定“this”是否设置正确,但我认为使用jquery点击将确保“this”是你所期待的。我也认为它更清楚。