2009-12-04 16 views
11

Esiste un equivalente JQuery della funzione $ find() di ASP.Net Ajax?

$() != $find() 

risposta

2

Non c'è un 1to1 equivalente, ma ciò che si desidera è di $ ('selector')

Scopri i docs sulla diversa selectors

$find('MyComponent') would be $('#MyComponent') 

$find('MyComponent',div) would be $(div).find('#MyComponent') 
1

Se si vuole trovare un elemento dal suo ID di codice ASP.NET piuttosto che dal ClientID generato (ctl00_RealId), è possibile utilizzare questa funzione. Sembra proprio per gli elementi che hanno un ID che termina con _{the real ID here}:

var $$ = function (id, context) { 
    var $ = (jQuery) ? jQuery : return ; 
    var el = $("#" + id, context); 
     if (el.length < 1) 
     el = $("[id$=_" + id + "]", context); 
    return el; 
} 

Ad esempio, dire la vostra ID nel codice è pnlSuccess, dire che un pannello:

<asp:Panel ID="pnlSuccess" runat="server"></asp:Panel> 

Ma nel codice reso esce come: ctl00_content_ctl00_pnlSuccess

chiamando il numero $$("pnlSuccess") troverà quel pannello renderizzato.

+0

questo potrebbe essere molto inaffidabile in situazioni UserControl in cui molti controlli potrebbero terminare con lo stesso ID ma avere un prefisso diverso –

+0

In tal caso, utilizzare il 'context' avrebbe più senso. –

+2

sì. lo so. in realtà ho usato $ ("input [nome * = pnlSuccesso]) per trovare il controllo.Quello che in realtà voglio è l'oggetto restituito da $ find(), sembra che l'oggetto $ find() ritorni in ASP. Net Ajax differisce dall'oggetto restituito da $() in Jquery. L'ho notato sicuramente quando uso Telerik Controls. – pauldomag

1

Farei solo quanto segue, senza problemi, senza problemi, direttamente al punto.

$('#' + <%=myControl.ClientID%>) 
+0

Questo presuppone che tu sia sulla pagina in cui il tuo codice reso è attivo, non in un file JavaScript esterno. –

+2

sì. sapere che.in realtà ho usato $ ("input [nome * = pnlSuccesso]) per trovare il controllo.Quello che in realtà voglio è l'oggetto restituito da $ find(), sembra che l'oggetto $ find() ritorni in ASP. Net Ajax differisce dall'oggetto restituito da $() in Jquery. L'ho notato sicuramente usando Telerik Controls. – pauldomag

+0

Questo perché $ find() restituisce solo un elemento DOM e $() restituisce un oggetto jQuery che avvolge una matrice di elementi DOM tuttavia, $() è altrettanto utile, probabilmente molto di più. –

8

Non c'è dato $find Restituisce il componente AJAX relative all'elemento DIV, e non l'elemento DOM. Potresti creare il tuo plugin che scorciato il metodo find.

Microsoft ha creato $find come un modo per collegare i componenti ASP.NET AJAX al DOM.

+1

Finalmente qualcuno conosce il vero uso di '$ find()' –

1

So che è un po 'di tempo in ritardo, ma penso di avere il tipo di soluzione che stai cercando. Se ho ragione, stai cercando un sostituto di jQuery perché non conosci l'ID dell'elemento (che non ha selettori $find per quanto ne so, ma jQuery è fantastico). Mi sono appena imbattuto in questo problema utilizzando i controlli Telerik su una pagina di SharePoint, quindi il mio ID oggetto è un pasticcio lungo e pazzo, e poiché Sharepoint 2010 è su .NET 3.5, non posso usare un ID statico.

La soluzione è semplice, ma mi ha rovinato il cervello per un po '. $find() sta cercando per ID, che fortunatamente possiamo restituire come stringa attraverso jQuery: $("elem").attr("id"). Quindi in pratica quello che facciamo è usare jQuery all'interno della funzione $find e funziona. Ecco un esempio dal mio progetto:

var contextMenu = $find($("[id*=mnuContext]").attr("id")); 

Questo ha funzionato per me, e sta andando a darmi una mano molto con il resto della mia soluzione SharePoint.