使用短代码将脚本附加到ID?

时间:2013-11-01 05:01:29

标签: javascript jquery html

我的代码如下:

<div id="content">
 <div id="widget1"></div>
 <div id="widget89"></div>
 <div id="widget78"></div>
 ..............
 <div id="widget(anyIndex)"></div>
</div>

通过向widget(HTML / JS小部件)中添加内容,我有:

<div id="content"
     <div id="widget1">
       <script type='text/javascript'>
                jQuery("#widget1").selectme({
                Numpost:4,
                Stylepost:"papa",
                });
    </script>
     </div>
     <div id="widget89">
       <script type='text/javascript'>
                jQuery("#widget89").selectme({
                Numpost:7,
                Stylepost:"popo",
                });
       </script>
     </div>

     ..............
     <div id="widget(anyIndex)">.....</div>
 </div>

这是手动和耗时的。

现在,我想使用短代码,而不是在每个div中重复过多的Javascript,如:

<div id="content"
 <div id="widget1">[4][papa]</div>
 <div id="widget89">[7][popo]</div>
 ..............
 <div id="widget(anyIndex)">...</div>
</div>

JS:

<script>
(function (a) {
    a.selectme = function (c, b) {
        var d = this;
        d.init = function () {
        d.options = a.extend({}, a.selectme.defaultOptions, b);
      ...................something
        };
        d.init()
    };
    a.selectme.defaultOptions = {
        Numpost:4,
        Stylepost:"Enter your style",
    };
    a.fn.selectme = function (b) {
        return this.each(function () {
            (new a.selectme(this, b))
        })
    }
})(jQuery);

</script>

注意:Widget(anyindex)会自动捕获。例如:widget89设置为当前但我不知道该窗口小部件的索引(索引= 89),只是确定我正在输入Javascript / Jquery代码。当我添加新的小部件时,我将有新的索引,例如:widget105或者widget200(anyindex)

我该怎么做?谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

这是使用标记中的数据属性和简单的each循环进行初始化的方法。为您需要在插件中指定的变量添加data-属性。

<div id="widget89" data-numpost="7" data-style="popo">
 alert( $('#widget89').data('numpost') );

要获取窗口小部件的索引,首先要创建它们的集合以用于索引:

使用$.each初始化整个集合将为您提供集合中窗口小部件的索引(我不清楚您需要它):

$('[id^=widget]').each(function(idx){
   var $this=$(this), data=$this.data, INDEX=idx;
   $this.selectme({
       Numpost:data.numpost,
       Stylepost:data.style
   })
})

答案 1 :(得分:1)

你可以使用一个功能

function setwidget(id,post,style)
{
  jQuery("#"+id).selectme({
                    Numpost:post,
                    Stylepost:style
                    });
}

现在称为

 setwidget("widget1",4,"papa");
setwidget("widget89",7,"popo");