2013-04-20 83 views
1

我有一個jQuery插件
假設來顯示警報
html頁面是jQuery插件發送值回調函數

<html> 
<head> 
<script src='jquery.js'></script> 
<script src='myPlugin.js'></script> 
<script> 
$().ready(function(){ 
    $(".txt").my-plugin({},function(e){ 
     alert(e.a +" "+ e.b); 
    }); 
}); 
</script> 
</head> 
<body> 
    <input type='text' class='txt' /> 
    <input type='text' class='txt' /> 
    <input type='text' class='txt' /> 
</body> 
</html> 

和我的插件是如下

;(function ($) { 
$.fn.myPlugin = function (options,callback) {  
    var defaultVal = { 
    vars:'values' 
    }; 
    var obj = $.extend(defaultVal, options);//overwrite default values if there 
    return this.each(function(){ 
    //my other code 
    $(this).click(function(){ 

    //my code 

     var a="some value"; 
     var b="more values"; 
     if (typeof callback == 'function') 
     { 
      callback.call($(this));//how can I send var a,b here 
     } 
    }); 
    }) 
    }; 
})(jQuery); 

Q1:如何我可以發送來自插件的值在回調函數中被訪問嗎?
我必須發送屬性值

Q2:如何將回調函數放置在Options中?

回答

1

應該

$(".txt").alamStar({},function(e){ 
    alert(e.a +" "+ e.b); 
}); 

,因爲函數名alamStar ......

這裏的一些

$(function(){ 
    $(".txt").alamStar({ 
     callback: function(e){ 
     alert(e.a +" "+ e.b); 
     } 
    }); 
}); 


;(function ($) { 
$.fn.alamStar = function (options) {  
    var defaultVal = { 
    vars: 'values', 
    callback: null 
    }; 

var defaultVal = $.extend(defaultVal, options);//overwrite default values if there 

return this.each(function(){ 
    //my other code 
    $(this).click(function(){ 

//my code 

    var a="some value"; 
    var b="more values"; 

    if (typeof defaultVal.callback == 'function') 
     defaultVal.callback({a:a, b:b});//how can I send var a,b here 

    }); 
}) 
}; 
})(jQuery); 
+0

調整喔是,,我HV複製此編輯.... 。但是我怎樣才能從插件發送一個和b? – 2013-04-20 11:38:53

+0

@YourYummy檢查我的編輯 – 2013-04-20 11:42:20

+0

謝謝@Thanh Trung,它正在按我的需要工作 – 2013-04-20 11:54:29