2011-08-24 117 views
0

如何去通过AJAX加载页面,并通过内部链接直接移动到particlur部分?我知道绕了正在添加#[sectionId]将网址或查询字符串的方式。JQuery的AJAX URL参数:内部链接/相对链接

我试图追加#linkId到href属性值,但似乎jQuery的#字符后截断所有字符。

语境: 我使用jQuery UI选项卡,并与面板相关的标签。该面板包含链接列表 - 内容列表以及主要内容。鉴于内容的列表preceeds的主要内容,我希望能够点击一个链接,直接将相关的部分。

$('.helpNoteTabs').tabs({ 
     load: function (event, ui) { 
      $('a', ui.panel).live("click", function() { 
       $(ui.panel).load(this.href); 
       return false; 
      }); 
     }, 
     ajaxOptions: { 
      data: { dataj: "", sourceFile: sourceFileName, table: "" }, 
      cache: false, 
      type: "POST", 
      success: function (data, textStatus) { 
      } 
     } 
    }); 

我有渲染Contentents的名单如下:

<li><a href=""mocks/FetchHelpNote.asp?sourceFile=sc_mna#helpFooter"" class=""helpNoteDialogIndexLink"">" & recordset("title") & "</a></li>" 

注:我只追加了#helpFooter以上值href属性作为一个测试,看看是否页脚部分向上移动。用Firebug点击并检查发布的网址。我知道截断后的#字符和字符: Post:mocks/FetchHelpNote.asp?sourceFile = sc_mna

布局如下我的选项卡面板中。内容

列表

linkOne

linkTwo

内容。

linkOne

linkOneContent

linkTwo

linkTwoContent

我们的目标是让最终用户点击链接,并通过内部链接移动到相关的部分。

+1

请显示一些代码 –

回答

1
#, . and others are special characters, you need to escape them with \\ 

jquery selectors

如果你希望使用任何的元字符(如“#$%&“()* +,/ :; < => @ [? ] ^`{|}〜)作为一个名字的文字部分,你必须用两个反斜杠来转义字符:\\例如,如果你有一个id =“foo.bar”的元素,你可以使用选择器$(“#foo \\。bar”)。

+0

谢谢,但这更多的是与选择器字符串相关的URL。jQuery不允许#字符在href属性值中吗?我会逃避它吗? (/([#;&,。+ *〜':“!^ $ [\]()=> | \ /]]/g,''在文档内部调查内部链接的方式 – Terman

+1

如图\\ $ 1' )'[这里](http://forum.jquery.com/topic/add-a-jquery-selector-escape-function)。对于“href”部分,您可以使用[javascript encodeURIComponent函数](http://www.w3schools.com/jsref/jsref_encodeuricomponent.asp) – roselan

+0

感谢URL编码位解释了为什么#字符不被允许。对于滚动方面,我想我会探讨ScrollTo jQuery插件 – Terman