jQuery插件访问信息如何?

时间:2011-01-24 03:48:48

标签: javascript jquery html ajax jquery-plugins

例如,我有一个元素列表的插件:

<ul id="list_elements">
 <li>1 element</li>
 <li>2 element</li>
 <li>3 element</li>
 <li>...</li>
</ul>

使用插件的jQuery代码:

$('#list_elements').loadElementsPlugin();

如果loadElementsPlugin有一个函数(getElementsCount()),你可以调用该函数做这样的事情:

var myvar = $('#list_elements').loadElementsPlugin();
alert( 'My count is ' + myvar.getElementsCount() );

但是,如果你想从同一个HTML代码调用该函数,你怎么做呢?

例如:

 <ul id="list_elements">
     <li>1 element</li>
     <li>2 element</li>
     <li>3 element</li>
     <li>...</li>
     <li><input type="button" onclick='alert( ??????.getElementsCount() );'/></li>
    </ul>

我希望你理解我的问题......

3 个答案:

答案 0 :(得分:1)

使用方法链接。所以你的loadElementsPlugin应该返回一个jQuery对象

$( '#list_elements')   .loadElementsPlugin()   .getElementsCount()

答案 1 :(得分:0)

这是不好的做法;你应该使用jQuery点击处理程序 不要将脚本与演示文稿混合。


要回答这个问题,你可以像在其他地方调用插件一样 此外,由于this将引用您点击的元素,因此您还可以撰写$(this).closest('ul').getElementsCount()

答案 2 :(得分:0)

好像你问的是如何使用你的插件并让它引用它被调用的列表。如果是这样,尝试这样的事情:

$(document).ready( function(){
  $('ul').find('button') // for each button inside a list
      .click( function(e){ // attach this click behavior
        e.preventDefault(); 
        $(this).closest('ul') // this list
            .loadElementsPlugin().getElementsCount(); // apply your plugin
    });
});

这可以处理多个列表(如果有的话),并且可以避免使用内联事件处理程序。