2011-05-18 130 views
4

我想要下面的loadContent函数加载目标div只有当点击的链接有一个特定的类。这是我想出迄今:Jquery hasClass + If语句

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

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

函数作品,未经if语句,但我似乎无法得到hasClass与工作是否 - 任何想法?谢谢!

回答

1

它更改为以下,和它应该工作:

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

使用.call(),你在loadContent功能设置的this值当前元素。

而且因为我们在内联处理函数中使用onclick,this会给你那个传递的引用。

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> 
0

而不是使用HREF =“JavaScript的:” ......你能也许使用jQuery的点击()方法来绑定你的点击?

我不确定是否正确设置了“this”,但我认为使用jquery click将确保“this”是您所期望的。我也认为这更清楚。