Javascript 带JS的站点属性(续)
根据我在这里提出的问题: 我使用下面的代码将文本从一个div传递到另一个div,只要数据目标等于页面上的某个元素类Javascript 带JS的站点属性(续),javascript,properties,Javascript,Properties,根据我在这里提出的问题: 我使用下面的代码将文本从一个div传递到另一个div,只要数据目标等于页面上的某个元素类 $('#sp').children().each(function() { $($(this).data().target).html($(this).html()); }); 但是,我想知道是否可以在页面上键入与数据目标值相等的文本,而不是将文本传递给html元素,然后将该文本替换为数据目标中的文本。例如: <div id="sp" style="display:
$('#sp').children().each(function() {
$($(this).data().target).html($(this).html());
});
但是,我想知道是否可以在页面上键入与数据目标值相等的文本,而不是将文本传递给html元素,然后将该文本替换为数据目标中的文本。例如:
<div id="sp" style="display:none;">
<span data-target=".busFullName">My Great Company</span>
</div>
<!-- On some page -->
<p>sp.busFullName has been around since 1920</p>
<!-- Rendered text would be -->
<p>My Great Company has been around since 1920</p>
我伟大的公司
自1920年以来,sp.busFullName一直存在
我的大公司从1920年就存在了
这样,我就不必每次使用创建的属性时都创建额外的标记
如有任何见解,将不胜感激。谢谢。我认为您不应该采用这种方法,因为如果客户端环境中没有JavaScript,它会使代码在语义上变得毫无意义,并且有点难以理解。我在这里是这样说的:
(function(){
// Containing element's ID
var boxID = "#sp";
// All data-target elements within containing element
$("[data-target]", boxID).html(function(a,b){
// Pattern of #id.targetValue
var pattern = boxID.slice(1) + $(this).data("target");
// Find everything in body that contains this pattern
$(":contains("+pattern+")", "body").html(function(c,d){
// Replace instances of pattern in html with html
return d.replace(pattern, b);
});
});
})();
演示:您可以这样做,但从语义上讲,代码将毫无意义,如果没有JavaScript,代码将无法理解。还想做吗?@JonathanSampson是的,我想知道怎么做。我知道有一小部分人会关闭js,但在这种情况下,很多网站功能无论如何都会被破坏。你认为哪种方式更好?我在服务器端编码方面没有那么丰富的经验,所以我需要一些建议。如果需要的话,调用一个单独的html页面来保存属性数据目标值可能会有所帮助,这与在页面上呈现属性数据目标值类似。你对此有什么想法也会有帮助。谢谢。属性显示正确,但代码破坏了页面上的许多其他内容。我不知道这是为什么,但是当我使用它的时候,它会从页面中删除body标签。在你的脚本中,(a,b)和(c,d)是什么意思?我相信它被用在了另一个函数上,这是一个冲突。@trobbins26我已经更新了它;它不应该影响身体元素。一定要用一个元素来替换
“body”
,该元素与可能包含目标值的所有元素更接近。遇到了一个小问题。当页面上有超过1个名称实例时,它将无法识别超过第一个实例的名称。。。有什么想法吗?