2011-05-18 159 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」是您所期望的。我也認爲這更清楚。