2011-03-04 6 views
1

나는 다음과 같은 스크립트가 : 나는 "이"의 id 속성을 분할하려고via via via this?

$('#element_1').live('click', function() { 
    function_1(this) 
}); 

function function_1(that) { 
    that = that.attr("id").split('_'); 

    alert(that[0]); 
    alert(that[1]); 
} 

,하지만 오류가 발생합니다 :

개체가이 속성 또는 메서드를 지원하지 않습니다.

그러나 예를 들어 클릭 이벤트에서 직접 동일한 작업을 수행 할 때

$('#element_1').live('click', function() { 
    var that = $(this).attr("id").split('_'); 

    alert(that[0]); 
    alert(that[1]); 
}); 

최상위 버전의 스크립트를 작동 시키려면 어떻게해야합니까? ,

function_1($(this)); 

을 (정확하게 두 번째 버전에서이 작업을 수행합니다 :

답변

3

this에 줄을 변경 이것이 작동하는 이유입니다). 더 나은 무엇


는 jQuery를하지 않고 id에 액세스 할 수 있습니다 :

that = that.id.split('_'); 
0
$('#element_1').live('click', function() { 
    function_1(this) 
}); 

    function function_1(that) { 
    that = $(that).attr("id").split('_'); 

    alert(that[0]); 
    alert(that[1]); 
} 

that을위한 $를 추가하거나 먼저 jQuery를 함께 function_1(this)function_1($(this))

0

당신은 첫 번째 예에서 jQuery를에 this을 포장하는 것을 잊었다.

재 작성

$('#element_1').live('click', function() { 
    function_1(this) 
}); 

$('#element_1').live('click', function() { 
    function_1($(this)); 
}); 

와 그것을 작동합니다.

일반 HTML 요소 객체에는 attr 메소드가 없습니다 (jQuery에만 해당). 그러므로 오류.

0

function__1 like this function_1 ($ (this));

관련 문제