2014-04-01 39 views
0

在我的區域中,我有一個帶ID的隱藏輸入字段。我想將此ID添加到側欄導航的第一個鏈接中。添加字符串鏈接到jQuery不起作用

我的導航:

<div class="sidebar"> 
<ul> 
    <li><a href="http://www.example.com">Link 1</a></li> 
    <li><a href="http://www.example.com">Link 2</a></li> 
    <li><a href="http://www.example.com">Link 3</a></li> 
</ul> 

我所需修改的輸出對該導航第一個鏈接:

<li><a href="http://www.example.com?id=25">Link 1</a></li> 

爲了實現這一點,我一直在嘗試了下面的代碼:

<input id="input_id" type="hidden" value="' . <?php $id ?> . '"> 
<script> 
    var id = '?id=' + jQuery("#input_id").val(); 
    var _href = jQuery(".sidebar > ul > li > a").attr("href"); 
    jQuery(".sidebar > ul > li > a").first().attr("href", _href + id); 
</script> 

它以某種方式不起作用。該ID不會被添加爲GET參數。誰能在這裏看到問題?

+1

似乎爲我工作:HTTP://的jsfiddle .net/Pj96g /你的方式不工作?當你調試這個時,會發生什麼?你的選擇器是否能找到你期望的元素?你期望的價值是什麼? – David

+0

爲什麼你的雙引號內有單引號和句號? 「它以某種方式不起作用」是什麼意思? –

回答

0

你應該始終把操縱的DOM準備函數內部

<script> 
$(function(){ 
// put your code here. 
}); 
</script> 

<script> 
$(document).ready(function(){ 
// put your code here. 
}); 
</script> 
+0

沒有跡象表明這是問題所在。相關代碼顯然出現在它所針對的其中一個元素之後,它也可能會在其他元素之後出現。 (至少按問題提供的順序,它已經做到了。) – David

+0

我唯一清楚的是他的JS在隱藏輸入之後立即出現。如果側邊欄div位於頁面的其他位置,這可能是他遇到問題的原因。他在他的問題中使用了不同的代碼塊,所以我沒有假設他的代碼的順序相同。 – kinadian

+0

@大衛這是問題的答案。我正準備發佈它。那些DOM元素甚至可能在腳本執行時沒有被創建。http://jsfiddle.net/tilwinjoy/Pj96g/1/ –

0

有報道說,我只是固定的幾個問題jQuery代碼。下面是工作的代碼:

<input id="input_id" type="hidden" value="<?php echo $id ?>"> 
<script> 
var id = '?id=' + jQuery("#input_id").val(); 
var _href = jQuery(".sidebar > ul > li > a").attr("href"); 
jQuery(".sidebar > ul > li > a").first().attr("href", _href + id); 
</script> 
+0

在我原來的第一行。 。 –

0

這條線:

var _href = jQuery(".sidebar > ul > li > a").attr("href"); 

被_href設置爲陣列。正因爲如此,你得到所有的HREF屬性從一個標籤,所以當你使用下一行

jQuery(".sidebar > ul > li > a").first().attr("href", _href + id); 

你試圖將一個字符串追加到字符串數組。

嘗試要麼得到這樣的第一HREF:

var _href = jQuery(".sidebar > ul > li > a").first().attr("href"); 

或者,您可以將ID添加到每個數組項是這樣的:

jQuery(".sidebar > ul > li > a").each(function(){ 
    $(this).attr("href", _href + id); 
});