0

由于我的问题在这里: Passing site properties with javascript 我使用下面的代码在数据目标等于页面上的某些元素类的任何情况下将文本从一个 div 传递到另一个。

$('#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>

这样我就不必每次使用创建的属性时都创建额外的标签。

任何见解将不胜感激。谢谢。

4

1 回答 1

1

我认为您不应该采用这种方法,因为如果 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);
        });
    });
})();​

演示:http: //jsfiddle.net/rpHB2/3/

于 2012-11-05T03:38:48.910 回答