如何在JQuery中创建自己的函数?

时间:2010-06-23 08:02:45

标签: jquery

如何创建自己的函数并将其称为另一个函数?像 -

$('.mycls li').hover(function() {    
var divid = $(this).find('li').attr('some_attr');
call myfunc(divid);
});

function myfunc(divid)
{
$(divid).show();
//I want to hide rest all divs 
$('div#info1').hide();
$('div#info2').hide();
$('div#info3').hide();
}

我有两个问题,一个是如何在jquery中实现这个逻辑第二个是哪个属性可以用来引用特定的div到特定的div

我的div是 -

<div id="info1">
//some information
</div>
<div id="info2">
</div>
....

3 个答案:

答案 0 :(得分:5)

您的函数应该能够像jquery的其他方法/函数一样对包装集进行操作。考虑一个插件,很容易:

jQuery Plugin Tutorial

或者看:

Defining your own functions in jQuery

答案 1 :(得分:1)

您无需使用关键字call来调用函数。所以只需使用

myfunc(divid);

调用你的函数就行了。

要将li - s与div - s相关联,您可以使用ID命名方案,例如,以广告开头提供您所有的li - 以及所有内容div ids以“info”开头,但是后面的位是相同的。

<li id='d1'> </li>
<li id='d2'> </li>
<li id='d3'> </li>

<div id='info1'></div>
<div id='info2'></div>
<div id='info3'></div>

然后使用

$('.mycls li').hover(function() {      
    // get the number part of the li id and use it to
    // build the divid by appending it to "info"
    var divid = "info" + $(this).attr('id').slice(1);
    myfunc(divid);   
});   

function myfunc(divid)   
{
     $("#" + divid).show();   
     //hide all divs that do not have id=divid
     $("div:not(#" + divid + ")").hide();
} 

答案 2 :(得分:1)

我写了这个:

jQuery.fn.doSomeStuff = function(options, callback) {
    var $elem = $(this[0]) 
    var args = options || {};

    // doSomeStuff
    alert("DOM element: "+$elem.html());
    alert("this ia a parameter:"+ args.aParameter);

    if (typeof callback == 'function') { // make sure the callback is a function
        callback.call(this); // brings the scope to the callback
    }
    return $elem; //ensures jquery chainability
};
  1. 定义您自己的功能
  2. 指定参数和回调
  3. 确保jquery可链接性
  4. 您可以尝试here