2009-06-17 6 views
5

Je suis en train de prendre ce de voir la source, i.e. .:jQuery Selectors

<a href="javascript:validateCB();"><img src="wwv_flow_file_mgr.get_file?p_security_group_id=1343380920146312332&p_flow_id=222&p_fname=submit_btn.gif" alt="Submit Details" border="0" /> 

en format sélecteur jQuery

var $templateButtons = $('img[src^="wwv_flow_file_mgr"]').parent('a'); 

Mais cela ne semble pas être correct.

Des idées sur la façon de traduire le code source de vue ci-dessus en jQuery?

Merci, Tony.

Répondre

10

Le problème est avec le sélecteur d'attribut: $('img[src^="wwv_flow_file_mgr"]')

Vous rencontrez un known bug dans jQuery v1.3.2 - jQuery tente d'interpréter le chemin de l'image en utilisant son URL absolue, ce qui signifie que l'URL, il est la comparaison commence en fait avec « http://... »

Vous pouvez temporairement contourner ce en utilisant *= (qui recherche une valeur d'attribut qui contient le texte « wwv_flow_file_mgr » au lieu de commencer avec elle):

var $templateButtons = $('img[src*="wwv_flow_file_mgr"]').parent('a'); 
+0

Merci pour les détails concernant ce bug. Je ne savais pas que ça existait. –

+0

Salut, essayé ceci mais j'obtiens l'erreur suivante, c'est-à-dire "attr (...)" est nul ou pas un objet. Pas sûr si elle est de cet extrait de code:.. $ templateButtons.attr ('data-submitval', function() { retour $ (this) .attr ('onclick') toString() split ('\ n ') [2]; }); Toute aide serait appréciée. – tonyf

1

Ceci est très étrange, cela ne fonctionne pas avec le sélecteur que vous avez, bien que, je pense qu'il devrait. Cependant, même s'il n'est pas très propre, il fonctionne avec un filtre comme illustré ci-dessous.

var $templateButtons = $("img") 
         .filter(function(){ 
          return $(this).attr('src') 
            .indexOf('wwv_flow_file_mgr')==0; 
         }).parent('a');