Tengo esta función que determina la identificación del elemento seleccionado. Necesito almacenarlo como una variable que pueda usar en otra función.

$(".loadlist").click(function() {

     var folderid;
     folderid =jQuery(this).attr('id') || ''
      $("#adults").swap({
      target: "table1_wrapper",
      opacity: "0.5",
      speed: 1000,   
});
});

La segunda función es

 jQuery(document).on("click", "#trigger_adults", function (event) {
 folderName = "/sites/bi/adultslibrary/";
fullpath = folderName + folderid;


  $().SPServices({
      webUrl: "http://onespace.nottscc.gov.uk/sites/bihub",
      operation: "GetListItems",
      async: false,
      listName: "adultslibrary",
      CAMLRowLimit: 100,
      CAMLViewFields: "<ViewFields>
     <FieldRef Name='LinkFilename' /> 
     <FieldRef Name='EncodedAbsUrl'/>  
     <FieldRef Name='Year'/> 
     <FieldRef Name='Snapshot'/></ViewFields> " ,
     CAMLQueryOptions: "<QueryOptions><Folder>"+fullpath+ "</Folder></QueryOptions>",
 // everything else

Necesito poder acceder a la variable de ID de carpeta en la segunda función para poder usarla para concatenar la ruta de URL.

0
RScott 16 feb. 2017 a las 15:21

3 respuestas

La mejor respuesta

Además de definir sus variables globalmente , como se menciona en otras respuestas, creo que el problema es que no está envolviendo su Javascript en una función document.onready.

De todos modos, lo siguiente funcionó para mí:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>


<div class="loadlist" id="1">
  LoadList
</div>

<br><br>

<div id="trigger_adults">
  #trigger_adults
</div>

<script>
  $(function() {

    var folderid;
    var folderName;
    var fullpath;

    $(".loadlist").click(function() {

      folderid = jQuery(this).attr('id') || '';

    });

    jQuery(document).on("click", "#trigger_adults", function(event) {

      folderName = "/sites/bi/adultslibrary/";
      fullpath = folderName + folderid;

      alert(fullpath);

    });

  });
</script>

Si todo lo demás falla, asegúrese de que su versión de jQuery sea v1.7 o posterior.

3
BFG 16 feb. 2017 a las 14:05

Puede definir la variable fuera del alcance de la función invocada cuando se hace clic en .loadlist.

var folderid;
$(".loadlist").click(function() {


   folderid =jQuery(this).attr('id') || ''
   $("#adults").swap({
     target: "table1_wrapper",
     opacity: "0.5",
     speed: 1000,   
   });
});

Y luego tu segunda función:

jQuery(document).on("click", "#trigger_adults", function (event) {
  folderName = "/sites/bi/adultslibrary/";
  fullpath = folderName + folderid;
  //...

También puede ver esto en acción aquí: JSFiddle

1
Eran Machiels 16 feb. 2017 a las 12:31

Podría usar una variable fuera de ambas funciones como esta:

var mySpecialId;
$(".loadlist").click(function() {
    mySpecialId = xxx;
    ...
});
$().SPServices({
    do something with mySpecialId
    ... 
});
1
Sascha 16 feb. 2017 a las 12:28