Je veux passer <li> id or value
dans l'événement onclick
. voici mon code existant.
<li onclick="getPaging(this.value)" id="1" value="1">1</li>
<li onclick="getPaging(this.value)" id="2" value="2">2</li>
voici le code javascript
function getPaging(str)
{
$("#loading-content").load("dataSearch.php?"+str, hideLoader);
}
Essayez comme ça ...
<script>
function getPaging(str) {
$("#loading-content").load("dataSearch.php?"+str, hideLoader);
}
</script>
<li onclick="getPaging(this.id)" id="1">1</li>
<li onclick="getPaging(this.id)" id="2">2</li>
ou discrètement
$(function() {
$("li").on("click",function() {
showLoader();
$("#loading-content").load("dataSearch.php?"+this.id, hideLoader);
});
});
en utilisant juste
<li id="1">1</li>
<li id="2">2</li>
<li>
s n'ont pas de value
- seules les entrées de formulaire en ont. En fait, vous n'êtes même pas censé inclure l'attribut value
dans le code HTML de <li>
s.
Vous pouvez compter sur .innerHTML
à la place:
getPaging(this.innerHTML)
Ou peut-être la id
:
getPaging(this.id);
Cependant, il est plus facile (et plus pratique) d’ajouter les gestionnaires de clics à partir de code JavaScript et de ne pas les inclure dans le code HTML. Étant donné que vous utilisez déjà jQuery, vous pouvez facilement y parvenir en modifiant votre code HTML en:
<li class="clickMe">1</li>
<li class="clickMe">2</li>
Et utilisez le JavaScript suivant:
$(function () {
$('.clickMe').click(function () {
var str = $(this).text();
$('#loading-content').load('dataSearch.php?' + str, hideLoader);
});
});
Cela ajoutera le même gestionnaire de clics à tous vos <li class="clickMe">
s, sans vous obliger à dupliquer votre code onclick="getPaging(this.value)"
pour chacun d'eux.
Essaye ça:
<li onclick="getPaging(this.id)" id="1">1</li>
<li onclick="getPaging(this.id)" id="2">2</li>
function getPaging(str)
{
$("#loading-content").load("dataSearch.php?"+str, hideLoader);
}
Je préfère utiliser l'API de données HTML5, consultez cette documentation:
$('#some-list li').click(function() {
var textLoaded = 'Loading element with id='
+ $(this).data('id');
$('#loading-content').text(textLoaded);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id='some-list'>
<li data-id='1'>One </li>
<li data-id='2'>Two </li>
<!-- ... more li -->
<li data-id='n'>Other</li>
</ul>
<h1 id='loading-content'></h1>