2009-10-15 5 views
0

jQuery와 IScriptControls의 조합을 사용하고 있으며 모든 jQuery 함수에서 $ find를 사용할 수있는 것으로 보이지 않습니다.

예를 들어, $ get 및 $를 사용할 수 있지만 $ find를 사용할 수 없습니다.

// Configure the toolbar groups 
    $(document).ready(function() 
     { 

      // Returns the control 
      var works1 = $get("ctl00_ContentPlaceHolder1_uwt_MainNavigation"); 
      var works2 = $("#ctl00_ContentPlaceHolder1_uwt_MainNavigation"); 

      // Returns null 
      var broken = $find("ctl00_ContentPlaceHolder1_uwt_MainNavigation"); 

     } 
    ); 

내 페이지가로드 내 MainNavigation 탭 컨트롤에서 선택된 탭을 얻을 필요가있는 메소드를 호출 할 필요가

(그것은 Infragistics의 UltraWebTab입니다,하지만 난 그게는 Infragistics의 아니에요의 보장하기 위해 내 자신의 IScriptControls으로 테스트 한 발행물).

탭 인덱스는 $ find를 사용해야 만 얻을 수 있습니다. $ find를 사용할 수없는 이유는 무엇이며 어떻게 $ find 방식으로 컨트롤을 얻을 수 있습니까?

// Configure the toolbar groups 
$(document).ready(function() 
    { 

     // Get the UltraWebTab Control 
     var tabControl = $find("<%=uwt_MainNavigation.ClientID %>"); 
     var index = tabControl.get_selectedTab(); 
     ToolBarShowGroup(index); 

    } 
); 

위의 내용은 툴바 표시 ​​및 숨기기를 위해 ToolBarShowGroup이 jQuery 함수를 호출하는 방식입니다.

또한, 내가 듣는 한 누군가가 IScript Controls와 관련하여 내 용어를 수정할 수 있다면 ... 'Ajax Controls'또는 'Extender Controls'입니까? 아니면 무엇입니까? 나는 그들이 다른 모든 것들로 언급되는 것을 보았다. 컨트롤에는 ol 'MyCompany.MyControl.prototype 선언이 있습니다.

EDIT : 다음은 완벽하게 작동하지만 차라리 $ (document) .ready 함수 안에 있었을 것입니다.

// Use the Ajax Load Methods 
function pageLoad() 
{ 
    var ajaxControl= $find("<%=myControlHere.ClientID %>"); 
} 
+0

Infragistics 컨트롤에 대해 $ find 대신 igtab_getTabById를 사용해야했지만 $ find를 통해 액세스해야하는 다른 컨트롤이 $ (document) .ready에서는 작동하지 않습니다. – GenericTypeTea

답변

2

jQuery의 $ (document) .ready가 Ajax 컨트롤이 구성되기 전에 발생하는 것으로 보입니다.

내가 가진 방법 작업은 아약스 프레임 워크에 의해 발사되는 다음과 같은 자바 스크립트 방법을 사용하려면이이었다가 나타나도록,

function pageLoad() 
{ 
    // $find() works in here 
} 

pageLoad() .ready $ (문서) 후 발사를 jQuery의 때 함수는 문서가 준비되었다는 것을 말합니다. 실제로 준비가되지 않았습니까?

1

당신이 또한 $ 기능을 재정의 다른 라이브러리와 jQuery를 사용하고있는 것으로 보인다. $ 대신 항상 jQuery을 사용해야하는 noConflict 함수를 사용할 수 있습니다.

jQuery.noConflict(); 


// Configure the toolbar groups 
jQuery(document).ready(function() { 
    // Returns the control 
    var works1 = $get("ctl00_ContentPlaceHolder1_uwt_MainNavigation"); 
    var works2 = jQuery("#ctl00_ContentPlaceHolder1_uwt_MainNavigation"); 
    // Returns null 
    var broken = $find("ctl00_ContentPlaceHolder1_uwt_MainNavigation"); 
}); 

jQuery(document).ready(function() { 
    // Get the UltraWebTab Control 
    var tabControl = $find("<%=uwt_MainNavigation.ClientID %>"); 
    var index = tabControl.get_selectedTab(); 
    ToolBarShowGroup(index); 
}); 
+0

jQuery 함수 안에 없을 때 $ find를 사용할 수 있습니다. 나는. 만약 내가 정상적인 JS 함수 안에 있다면 jQuery와 $ find를 사용하여 같은 함수 내에서 $를 얻을 수있다. jQuery 함수 안에 있으면 find가 작동하지 않게됩니다. 나는 너의 제안을 시도했지만 아무런 효과가 없다. – GenericTypeTea

0

왜이 문제가 발생하는지 잘 모르겠지만 대신 jQuery 객체를 사용하십시오. 처럼 :

var mainNav = $("#ctl00_ContentPlaceHolder1_uwt_MainNavigation"); 

또는 대신 jQuery 오브젝트의 DOM 객체를 원하는 경우, 당신은뿐만 작성할 수 있습니다

$(document).find("#elementid") 

또는 '당신이 경우 :

var mainNav = $("#ctl00_ContentPlaceHolder1_uwt_MainNavigation")[0]; 
+0

그들은 $ find 메서드와 동일한 속성을 반환하지 않기 때문에. $ find는 내 모든 private 멤버뿐만 아니라 컨트롤에 대한 get_ 및 set_ 메서드를 반환합니다. $ (control) [0]은 $ get과 같습니다. – GenericTypeTea

0

이 작동합니다 이벤트 핸들러 내에서 호출하면 더 좋습니다.

find 함수를 사용한 아이디어는 부모 컨트롤의 자손을 찾는 것이라고 생각합니다. 부모를 지정하지 않으면 작동하지 않는 것 같습니다.

그러나 모양에서 보면, 당신이하고있는 것을 찾기 위해 사용할 필요가 없습니다. 단순히 이것을하지 않는 이유는 무엇입니까?

$("#elementid") 
+0

그는 $ find()라는 다른 라이브러리 함수를 사용하고 있습니다. 그는 jQuery find 함수에 대해 언급하지 않습니다. – Technowise

+0

Technowise, 확실합니까? 내가 지금 테스트를했기 때문에 그가 작성한 방식대로 작동하지 않습니다. 나는 그것이 작동하도록 (문서)를 지정해야했다. –

+0

예, 확실합니다. 그가 사용하려고하는 기능은 다음에서 설명합니다. http://mattberseth.com/blog/2007/08/the_everuseful_get_and_find_as.html – Technowise

1

는 범위 지정 문제를 해결해야 document.ready

var FIND_FUNCTION = $find; 

$(document.ready) { 
    ... 
    var result = FIND_FUNCTION("ctl00_ContentPlaceHolder1_uwt_MainNavigation"); 
} 

이 외부에서 $ 찾기 기능을 재정의에 대해 당신이 가진 것은 무엇을 보인다.

+0

좋아 보이지만 옳지 않습니다. 나는 $ (document) .reader가 해고 될 때 컨트롤이 실제로 생성되지 않는다고 생각하기 시작했다. 그래도 좋은 생각이야! +1 – GenericTypeTea

관련 문제