我不确定这是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有关。
提前致谢,
斯科特。
答案 0 :(得分:3)
this.href
将返回锚点指向的完全限定URL。
您可以使用jQuery的attr
函数返回您想要的内容:
var $this = $(this);
$this.attr("href", $this.attr("href").replace('EXERCISENUMBER', rowIdx));
Here是一篇很好的文章,解释.attr("href")
如何“正常化”