通过在当前元素中获取短代码来运行函数

Run function in current element by get short code inside

本文关键字:代码 运行 函数 获取 元素      更新时间:2023-09-26

而不是添加一个 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>
(当我添加更多新小部件时,小部件

会自动添加,这意味着我可以拥有小部件3,小部件10,....索引(3,10..) 是任意的,不排序。

Widget 是一个 HTML/JS widget。

我想通过短代码运行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>

您的代码存在几个问题:

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],
    });
});

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

<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 以适应。