0

而不是添加一个 ID (IdAddMore) 在 ID(widget1) 中运行脚本,如下所示:

<div class="widget" id="widget1">
    <div class="content">
          <div id="IdAddMore"></div>
          <script type='text/javascript'>
          $("#IdAddMore").selectme({
           Numpost:3,
           Postyle : "Enter your style",
           });
          </script>
    </div>
</div>

(当我添加更多新的小部件时,小部件会自动添加,这意味着我可以拥有 widget3、widget10、...。Index(3,10..) 是任意的且未排序。)

小部件是一个 HTML/JS 小部件。

我想selectme通过短代码运行,而不是在每个小部件中重复脚本。

<div class="widget" id="widget1">
    <div class="content">
        [3][mystyle]
    </div>
</div>
<div class="widget" id="widget50">
    <div class="content">
       [4][yourstyle]
    </div>
</div>
...........

添加了如何仅编写脚本以捕获当前元素中的短代码:

我在下面写了脚本,但它不起作用。帮我看看,谢谢你的帮助。

 <script type='text/javascript'>
var getdata = document.getElementsByClassName(".content").innerText || document.getElementById(".content").textContent;
var thevalue = [];
getdata.replace(/\[(.*?)\]/g, function(g0,g1){thevalue.push(g1);});

$(".widget").selectme({
Numpost:thevalue[0],
Postyle: ""+thevalue[1]+"",
});
</script>
4

1 回答 1

0

您的代码有几个问题:

document.getElementsByClassName(".content").innerText

...不会工作,因为getElementsByClassName()返回一个列表,并且该列表没有.innerText属性。您需要遍历每个项目。

document.getElementById(".content")

...不会工作,因为你传递的是一个类选择器而不是一个普通的 id。

由于您使用的是 jQuery,请尝试以下操作:

$(".content").each(function() {
    var content = $(this).text(),
        values = content.match(/\[(.*?)\]\[(.*?)\]/);

    $(this).closest(".widget").selectme({
       Numpost:values[1],
       Postyle: values[2],
    });
});

话虽如此,在我看来,如果您使用 html5data-属性,从脚本中检索标记中的值会更简洁,也更容易,可能是这样的:

<div class="widget" data-numpost="3" data-style="Enter your style">

...因为那么所需的 jQuery 是微不足道的:

$(".widget").each(function() {
    var $this = $(this);
    $this.selectme({
       Numpost : $this.attr("data-numpost"),
       Postyle : $this.attr("data-style")
    });
});

如果这还不够速记,你可以说:

<div class="widget" data-sm="[3][Enter your style]">

...并修改 JS 以适应。

于 2013-11-02T04:08:43.403 回答