2013-02-03 2 views
1

Dans mon application jQueryMobile, j'utilise le curseur pour rechercher une partie de l'application. Lorsque curseur est ouvert et l'utilisateur écrit « mot à rechercher » dans le panneau de recherche, affichage de la liste de résultats trouvés est imprimé au format:Fonction de déclenchement à partir du "panneau de défilement" jQueryMobile, "affichage de la liste"

<li><a id='$id'>***search result***</a></li> 

son chargé à partir du fichier de recherche php. Au clic de cette partie de la liste, j'ai besoin de déclencher la fonction OnClick redirigeant vers une autre page et créer une variable. Mais ce déclencheur onClick n'est pas sélectionné.

Ceci est pannel avec la recherche INIT:

<div data-role="panel" data-theme="b" id="mypanel" data-position="right" data-position-fixed="true" data-display="overlay"> 
    <input type="search" name="search-mini" id="search-mini" value="" data-mini="true" /> 
     <div id="search_results"> 
     <ul data-role="listview" data-divider-theme="b" data-inset="true" id="sub_cont"></ul> 
     </div> 
</div> 

Php qui envoie résultat de la recherche:

if($uname == $check_uname){ 
echo "<li id='search_r'>" . "<a href='#'>" . $uname . " : " . " " . $fname . " " . $sname . "</a>" . "</li>"; 
}else{ 
echo "<li id='search_r'>" . "<a href='#' id='$id' class='s_result'>" . $uname . " : " . " " . $fname . " " . $sname . "</a>" . "</li>"; 
} 

et jQuery:

$("#cc_page").live('pageshow', function(){ 
    $("#search_r").click(function(){ 
     var search_r = $('.s_result').attr('id'); 
     window.location.href = "http://imes.jzpersonal.com/app/userpanel.html#sfpp_page"; 
    }); 
}); 

mais toujours cliquer sur la fonction n'est pas déclenchée. Une même expérience? Quelqu'un a trouvé une bonne façon de travailler?

Solution:

$("#cc_page").ready(function(){ 
    $("#search_r").live('click', function(){ 
     search_r = $(this).attr('id'); 
     window.location.href = "http://imes.jzpersonal.com/app/userpanel.html#sfpp_page"; 
    }); 
}); 

Répondre

2

Cela ne va pas fonctionner. D'après ce que vous avez expliqué lorsque vous entrez "word to search" listview est rempli dynamiquement avec des éléments li, mêmes éléments li qui devraient avoir un événement click sur eux.

Voici un problème. Vous liez un événement de clic au mauvais moment. Dans votre cas, l'événement click est lié à un événement pageshow, et à ce stade, listview n'est pas rempli avec les résultats de la recherche et, en raison du fonctionnement de javascript, les futurs éléments li ne verront pas d'événement click. L'événement ne peut pas être lié rétroactivement.

Ce que vous devez faire est de lier un événement click seulement après que les éléments ont été ajoutés à une liste.

+0

Eh bien, c'est logique, mais en tant que "novice" dans JS, je me demande vraiment comment je ferais cela? Une idée? –

+0

Si vous avez le temps et m'envoie votre fichier js (celui où vous ajoutez un nouveau contenu à listview) à mon email: [email protected] et je vais le réparer pour vous. Ou ajoutez-le à votre question. – Gajotres

+0

En fait vient de le résoudre, mais thx beaucoup de toute façon ... :) –

Questions connexes