2014-04-01 23 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); 
});