如何将参数从单击传递到实时函数



>我有两个功能点击和直播。我想将参数从单击传递到实时。我尝试了下面这样的东西,但它不起作用。

jQuery(document).ready(function(){
  var test = 'test' ;                               
  jQuery('.item a').click(test);//pass an argument from here
});
jQuery('.item a').live('click',function(e,test) {
  alert(test);//access argument here
});

这可能吗?

更新:

function init() {   
    //When you click on a link
    jQuery('.item a').live('click',function(e,test) {
        alert(test);
    });
}
jQuery(document).ready(init);
jQuery(document).ready(function(){
    var test= 'test';
    jQuery('.item a').trigger('click', test);   
});

我期待警报。

编辑2:

jQuery(document).ready(function(){
    (function($){
        $('.item').each(function() {
            $(this)[0].oncontextmenu = function() { return false }
          });
        $.fn.ctrl = function(key, callback) {
            if(typeof key != 'object') key = [key];
            callback = callback || function(){ return false; }
            return $(this).keydown(function(e) {
                var ret = true;
                $.each(key,function(i,k){
                    if(e.keyCode == k.toUpperCase().charCodeAt(0) && e.ctrlKey) {
                        ret = callback(e);
                    }
                });
                return ret;
            });
        };
        $.fn.disableSelection = function() {
            $(window).ctrl(['a','s','c']);
            return this.each(function() {           
                $(this).attr('unselectable', 'on')
                       .css({'-moz-user-select':'none',
                            '-o-user-select':'none',
                            '-khtml-user-select':'none',
                            '-webkit-user-select':'none',
                            '-ms-user-select':'none',
                            'user-select':'none'})
                       .each(function() {
                            $(this).attr('unselectable','on')
                            .bind('selectstart',function(){ return false; });
                       });
            });
        };
        $('.item').disableSelection();
    })(jQuery);             
});

谢谢。

你可以改用trigger(),它允许你传递参数;

jQuery(document).ready(function(){
  var test = 'test' ;                               
  jQuery('.item a').trigger('click', test); //pass an argument from here
});
jQuery('.item a').live('click',function(e,test) {
  alert(test);//access argument here
});

或者您可以使用隐藏字段来存储需要传递的参数,然后在单击函数中读取它

jQuery(document).ready(function(){
  var test = 'test' ;
  jQuery('#hiddenID').val(test);
  jQuery('.item a').click(test);//pass an argument from here
});
jQuery('.item a').live('click',function(e,test) {
  var test = jQuery('#hiddenID').val();
  alert(test);//access argument here
});

你也可以试试这个

jQuery(document).ready(function(){
    var test = 'test' ;                               
    $('.item a').trigger({type:'click', myParam:test}); // pass the event object with param
});
$('.item a').live('click',function(e) {
    alert(e.myParam); //access param here
});

另请记住live已弃用,而是使用 on

更新:

jQuery(document).ready(function(){
    var test= 'test';
    $('.item a').trigger({type:'click', myParam:test});
});
$('.item a').live('click',function(e) {
    alert(e.myParam); //access param here
});

最新更新