2011-09-08 64 views
0

這裏是HTML的問題以及與之相關的部分的Javascript:jQuery的load()方法的具體DIV不工作

HTML第一:

<div id="menu"> 
<ul> 
<li><a href="content.html#diviwant">click</a></li> 
</ul> 
</div> 

的Javascript雲:

$("#menu a").click(function(){ 
var link=encodeURI($(this).attr("href")); 
$("#divtobeloadedwith").load(link); 
return false; 
}); 

content.html結構:

<div id="wrapper"> 
<div id="diviwant">stuff</div> 
<div id="dividontwant">stuff</div> 
</div> 

一旦點擊鏈接,它會加載所有的內容而不是特定的div。

+0

還要記住,用你擁有的代碼,你正在從content.html中獲取'#diviwant'並將其放入'#divtobeloaded'中。你的div的命名意味着你有這種錯誤的方式。 –

+0

'#divtobeloadedWITH#diviwant' ??? –

回答

2

根本的問題是,你想要兩個不同的東西:

  1. 當沒有JavaScript運行時,你要使用的鏈接content.html#diviwant,因爲這將加載content.html的頁面,然後跳轉至元素ID爲diviwant

  2. 當使用Javascript運行,你想傳遞給content.html #diviwant jQuery的load()方法,因爲它告訴jQuery的與目標頁面的ID diviwant只加載的片段。

我可能會使用content.html#diviwant爲紐帶,因爲你已經得到了,那麼解釋,在jQuery的是這樣的:

$("#divtobeloadedwith").load(link.replace('#', ' #')); 

...添加必要的空間,爲load()

+0

非常感謝你馬特,它現在正在工作。 'encodeURI()'在我已經放置空間時正在做它的事情,但你的方法是更好的,並會利用它。最好!! –

1

您需要刪除鏈接的hrefcontent.html#diviwant之間的空格。

<li><a href="content.html#diviwant">click</a></li> 

您還需要確保「divtobeloaded」存在。

<div id="menu"> 
    <ul> 
     <li><a href="content.html#diviwant">click</a></li> 
    </ul> 
</div> 
<div id="divtobeloaded"></div> 
+0

這樣做後,它會加載所有內容,而不僅僅是特定的div –

+0

@daniel是的,你實際上都需要這兩個。如果您希望(使用正常的非Ajaxy鏈接)轉到content.html頁面上的項目#diviwant,則需要'content.html#diviwant'作爲鏈接。如果您希望* just *使用jQuery的'load'從content.html頁面加載#diviwant內容,則需要'content.html#diviwant'(帶空格)。從我所看到的明顯方法是,將content.html#diviwant作爲鏈接,並在使用jQuery加載時以編程方式添加空間。 –