如何从HTML中分离Javascript/JQuery
How to separate Javascript/JQuery from HTML?
假设我有一个div,它使用AJAX检索产品的价格和信息,并将新产品附加到当前结果中。
<div id="product">
<div class="label">Price: <div class="price">$10.90</div></div>
<div class="label">Sales Price: <div class="price">$9.90</div></div>
</div>
我可以做:1)只获取价格和数据。然后遍历这些结果,并让Javascript动态地为每个产品创建div。
这个的问题:如果div的HTML结构改变了(比如价格变化的类),我可能需要在两个地方改变它。在静态HTML中,以及在Javascript中。
2)或者让服务器返回要附加到页面的实际HTML是更好的实践吗?但是这会不会很混乱,因为设计并没有与业务逻辑分离,而且实际的HTML结构可能会发生变化?
还是我错过了第三种选择?
您可以使用java-script侧模板-有很多库。我建议大家看看John Resig的方法。我相信基于jquery的模板引擎也在进行中。
你也可以在这里阅读Rick Strahl的经验,以及各种模板库的比较。
虽然基于java脚本的模板是您的问题的优雅解决方案,但如果您必须支持禁用java脚本的场景,那么选项#2是不错的选择。通常,您使用服务器端模板为第一个请求以及ajax请求生成html(因此html结构仅在一个地方维护,即服务器端模板)。当然,在禁用js的场景中,ajax调用将变成常规的POST请求。
您可能想要考虑JavaScript模板。查看http://code.google.com/p/trimpath/wiki/JavaScriptTemplates
您可以让JSON从AJAX调用返回,并让模板完成最困难的工作。这样你在HTML中只有一个地方可以修改类。
编码快乐!
您应该让javascript在接收到数据时创建div。通过让javascript获取整个HTML结构和价格,你加载的信息比你自己加载价格并让JS输出的信息要多。
快乐编程。
你在页面上看到的只是展示,浏览器只是一个显示设备。所有的表示逻辑都应该在一个地方,所以如果服务器生成显示(这是通常的情况),那么在那里生成标记并将其插入客户端。
如果您想在客户端使用脚本访问页面中的数据,那么在保存数据的元素上使用合适的类或id,以便脚本可以找到它,而无需知道文档布局。
如果你只是在客户端上更新数据,使用相同的策略-将值传递给脚本,然后使用类或id(或其他)来确定要更新的元素。
如果你同时在服务器端和客户端做演示,如果有什么变化,你通常需要同时更新。
你可以在HTML中有一个空白的占位符,比如div,当细节不可用时div可以被隐藏。AJAX调用完成后,可以将包含标头和详细信息的结构动态添加到占位符中。如果结构改变了,你只需要修改一下JavaScript。
假设您控制了输出数据的服务器,您可以轻松地构建数据,如下所示:
<div id="product" data-price="$10.90" data-sales-price="$9.90">
other markup here
</div>
任何以"data"为前缀的HTML属性都可以正常验证。
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- Javascript(jQuery)给了我奇怪的结果
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- Javascript/jQuery中的并行Ajax调用
- 我可以在Javascript/jQuery中使用一个变量作为键吗
- Javascript/Jquery/PHP加载页面-如何
- Javascript/Jquery Blob not showing Chrome PDF
- 如何使用javascript/jquery获取iframe的URL的锚点属性
- OnClick/Onhover Javascript/jquery
- 如何从javascript/jquery中的复选框中获取布尔值
- javascript/jquery将utc转换为短格式的本地时间
- 在不设置协议的情况下,使用javascript/jquery更改iframe-src
- 如何向这个javascript/jquery函数添加参数
- 用JavaScript/jQuery点击图片,选中多个方框
- 使用Javascript/JQuery获取JSON GET数据
- 从数组中删除元素的最佳方法是:javascript/jquery
- Javascript/jQuery压缩一个图像正确的评论帖子,并使用Ajax Laravel 5.2保存到控制器中
- 用DRY方式Javascript/JQuery动态替换HTML
- 类似Javascript JQuery的库
- 如何在 Javascript/jQuery 中获取一些随机下拉列表的选定值