0

クリックとライブの2つの機能があります。click から live にパラメータを渡したいのですが、以下のようにしてみましたがうまくいきません。

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);             

});

ありがとう。

4

3 に答える 3

6

代わりに使用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
});
于 2012-09-25T09:21:05.733 に答える
1

または、隠しフィールドを使用して、渡す必要があるパラメーターを保存し、クリック関数で読み取ることができます

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
});
于 2012-09-25T09:23:48.667 に答える
1

これを試すこともできます

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
});

また、 onliveを使用する代わりに非推奨であることを覚えておいてください。

アップデート:

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
});
于 2012-09-25T09:31:06.890 に答える