HREF被修改得超出我的控制范围......?

时间:2011-02-18 12:41:38

标签: javascript jquery href

我不确定这是jquery,javascript还是浏览器中的怪癖,但请考虑以下代码:

for(rowIdx=0;rowIdx<theResultSet.rows.length;rowIdx++) {
  thisLine = $("#TestTemplateLI").clone().attr({'id':'test_'+rowIdx}).appendTo("#test_exerciseListUL");
  thisLine.find('[href*="#pageExercise_EXERCISENUMBER"]').each( function(i) {this.href = this.href.replace('EXERCISENUMBER', rowIdx)} );
}

上面代码的目标是克隆列表项(<LI>,嵌入在下面)HTML片段,修改它以寻址页面上其他位置的锚点,然后将其插入到无序列表中{{1 }})。所有这些都可以使用jquery的奇迹。问题是,一旦它被修改,锚似乎不起作用。此外,在我以编程方式修改HREF之后,它返回完整 URL,而不仅仅是锚引用。例如:

<UL>

所以,有两件事正在发生。一,修改后的锚点根本不起作用,两个,应该从“ href ='#pageExercise_EXERCISENUMBER'”修改为“ href ='#pageExercise_0'”(或者其他当前行索引('rowIdx')将其修改为:“ href ='http://www.mydomain.com/themainpage.php#pageExercise_0'”。

我需要一种方法来告诉javascript停止“帮助”我的href。关于问题#1,我认为它与#2有关。

提前致谢,

斯科特。

1 个答案:

答案 0 :(得分:3)

this.href

将返回锚点指向的完全限定URL。

您可以使用jQuery的attr函数返回您想要的内容:

var $this = $(this);
$this.attr("href", $this.attr("href").replace('EXERCISENUMBER', rowIdx));

Here是一篇很好的文章,解释.attr("href")如何“正常化”