2012-09-25 2 views
0

두 가지 기능이 있습니다. click to live에서 매개 변수를 전달하고 싶습니다. 아래처럼 시도했지만 작동하지 않습니다.click to live function에서 params를 전달하는 방법은 무엇입니까?

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

.

Edit2가 :

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

}); 

감사합니다.

답변

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

감사합니다. 이게 효과가 있다고 생각했는데 내가 뭔가 잘못하고있는 것 같아. 그리고 내가 기대 한 것을 얻지 못 했어. 문제를 알아 내도록 도와 주면 코드를 업데이트하고있어. – Irfan

+0

@ Irfan : 나를 위해 일합니다 (http://jsfiddle.net/UYPzc/). – Matt

+0

'.item-232 a'에 대해 마우스 오른쪽 버튼을 클릭하면 코드에 영향을 줍니까? – Irfan

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

[[data()'] (http://api.jquery.com/data)를 사용할 수도 있습니다.) 숨겨진 필드에 의존하기보다는이 상황에서 – Matt

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

또한 live을 기억 시도 할 수 PARAMS 저장하는 숨겨진 필드를 사용하여 다음 통과 클릭 기능에서 그것을 읽을 필요가 있습니다 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 
}); 
관련 문제