2010-07-28 4 views
1

Donc j'essaye de faire une page dans Visualforce (le créateur de page de salesforce), et ai des problèmes avec l'aspect de javascript de lui. Fondamentalement, ce qui devrait arriver est que la section va générer une série de liens. Le javascript doit cliquer sur ces liens. J'utilise jqueryQuel est le problème avec mon javery javascript ici?

<apex:page standardcontroller="Account" extensions="maininvoice"> 

<apex:repeat value="{!theListOfIDs}" var="anId"> 
<apex:outputLink target="_blank" value="{!URLFOR($Page.invoice2,anId)}" styleClass="name" /> 
</apex:repeat> 

<apex:includeScript value="{!URLFOR($Resource.jquery, 'js/jquery-1.4.2.min.js')}"/> 
<script type="text/javascript"> 
var j$ = jQuery.noConflict(); 
j$(document).ready(function(){ 

var anchortags = j$('.name'); 

      for(i=0;i<=anchortags.length;i++){ 
       var currentTag=anchortags[i];       
        currentTag.trigger(click); 
        alert("your mother"); 
        } 
      } 
      ); 

</script> 

</apex:page> 
+0

Cela vous aiderait vraiment à comprendre un problème à la fois. Essayez de créer une page de test avec votre javascript. Une fois que votre javascript fonctionne, placez-le dans l'environnement Salesforce. Les tags Salesforce et autres ne sont en fait que du bruit supplémentaire qui rend l'aspect plus compliqué que cela. – Akrikos

Répondre

2

répondre à votre question précise, ceci: currentTag.trigger(click); devrait être: currentTag.trigger('click');

Mais, allez, jQuery peut faire tout cela pour vous en un seul coup:

$('.name').click(); 
+0

la chose est, currentTag va être une référence d'élément DOM je pense, donc s'il voulait que cela fonctionne, il aurait besoin d'écrire '$ (currentTag) .trigger ('click');' - mais il peut vraiment éviter la boucle tout à fait parce que jQuery est heureux de le faire pour lui. Je suppose que c'est sympa cependant que cette réponse incorrecte te fasse des upvotes :) – Pointy

2

Vous mélangez en quelque sorte le codage jQuery avec le codage "traditionnel", et cela ne fonctionne pas. Essayez ceci:

var anchortags = j$('.name'); 

anchortags.click(); 
1

Quelque chose comme ceci:

var j$ = jQuery.noConflict(); 
j$(function(){ 
    j$('.name').click(); 
}); 

j$(function(){...}); est le même que j$(document).ready(function(){...});

La fonction click() sera exécutée pour chaque match dans la liste précédente (j$('.name')). L'utilisation de .each(function(){...}); est donc redondante.

0
var j$ = jQuery.noConflict(); 
j$(document).ready(function(){ 
    j$('.name').each(function() { 
     j$(this).trigger('click'); 
    }); 
Questions connexes