我不知道这是一个jQuery JavaScript或只是一个怪癖的浏览器,但考虑下面的代码:HREF被修改超出我的控制......?
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片段,修改它以寻址页面上其他位置的锚点,然后将其插入到无序列表(<UL>
)中。所有这些工作使用jquery的奇迹。问题是,一旦它被修改,锚点似乎不起作用。此外,在我编程HREF程序后,它返回一个完整的 URL,而不仅仅是一个锚点引用。例如:
<UL id='testTemplate' style="display:none">
<LI class='arrow' id='testTemplateLI'>
<a href='#pageExercise_EXERCISENUMBER'> <!-- THIS is the beast in question -->
<DIV class='LABELCLASS test_labelContainer'>
<TABLE height=100% width=100%>
<TR valign='center'><TD align='center'>EXERCISELABEL</TD></TR>
</TABLE>
</DIV>
<IMG id='test_checkmark_EXERCISENUMBER' class='test_checkMark_off' src="assets/checkmark.png" width=60px height=54px>
<DIV id='test_item_EXERCISENUMBER' class='test_exNameContainer'>
<TABLE height=100% width=100%>
<TR valign='center'><TD>EXERCISENAME</TD></TR>
</TABLE>
</DIV>
</a>
</LI>
</UL>
因此,有两件事情正在发生。一,修改后的锚点根本就没有工作,二,应该修改从“href ='#pageExercise_EXERCISENUMBER'”到“href ='#pageExercise_0'”(或任何当前行索引('rowIdx')它修改为:“HREF =‘HTTP://www.mydomain.com/themainpage.php#pageExercise_0’”。
我需要一种方法来告诉JavaScript来停止的href“帮助”我为。问题#1,我认为这是关系到#2。提前
感谢,
斯科特。
绑定点击函数,然后使用`window.location的.hash = $(this).attr('href');`看看它是如何工作的:) – Val 2011-02-18 13:17:32
你可能不得不使用live,因为li是动态的,你也可能需要使用e.preventDefault() – Val 2011-02-18 13:18:06