用JQ的load方法载入页面,传参的问题?

用JQ的load方法载入HTML页面,想要把参数传到HTML里面,再加载出来。

load()方法,本来是可以传参的,但是那是对于服务端的。我这里是本地HTML页面,请问还有什么办法可以实现?


后来利用url传参,或者cookie传参。 功能虽然能实现,但是感觉怪怪的,各位有好的建议也来聊一聊。

阅读 10.5k
6 个回答

你这个参数值从何而来

如果不依赖于服务,那就只有取到了 HTML 之后再通过 jQuery 去修改 HTML 中的内容,把参数植入进去。

本地的可以直接操作dom添加,或者一开始就放在页面,加一个display:none,需要显示的时候再显示

新手上路,请多包涵

可不可以放在链接后面获取对应参数的值

目前我是这样解决的

1、对load进行二次封装,在异步加载完html片段后,包裹一个div[data-role="pie"],然后把入参用jquery.data()方法暂存在Pie上。
2、片段内部的代码可以通过.closest()方法回溯到pie 并提取入参。

支持Number、String、Ojbect等任意合法类型的入参

示例:

/**
* 说明:
* 通过传入的容器id和组件地址,异步加载Html片段。
* 自动生成一个带特定属性data-role="pie"的容器,用来包裹该html片段
* 通过$.data()把入参以mailbox键名暂存在Pie节点上
* 支持Number、String、Ojbect等任意合法类型的入参   
* 组件内的脚本可以用.closest()方法追溯到该Pie容器,并提取传入的数据
* 另外,会根据PIE容器上的reload属性值,决定多次调用时是否重新请求代码片段
*
* 调用方法:
* App.includeHtml({url:'',container:'',data:{}})
*
* Options:
* @url:       [必选] [string] 组件的url地址
* @container: [必选] [string] selector,load的内容所存放的容器比如:'#con' 或者'.content .tab'
* @data:      [选填] [任意类型] 传给组件的数据,以'mailbox'保存在容器上
* @type       [选填] [string] 填充方式'append|prepend|html',不填默认是'html'
* @reload:    [选填] [boolen] 表示是否允许重新拉取,默认值是true
* @cb:        [选填] [function] 表示该组件初始化成功时的回调方法
*/
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题