Reputation: 846
I have a UL list which has 4 LI elements like this
<ul class="pagination " id="loadMore">
<li class="page-item"><a class="page-link prevR" href="#"><i class="fa fa-angle-left"></i></a></li>
<li class="page-item"><a class="page-link active" id="1" href="#">1</a></li>
<li class="page-item"><a class="page-link" id="2" href="#">2</a></li>
<li class="page-item"><a class="page-link" id="3" href="#">3</a></li>
<li class="page-item"><a class="page-link" id="4" href="#">4</a></li>
<li class="page-item"><a class="page-link nextR" href="#"><i class="fa fa-angle-right"></i></a></li>
</ul>
and i am trying to get id of the li element as
$('#loadMore').on('click', function () {
var page = $('#page');
var msg = $('#loadMoreMsg');
alert($(this).attr('id'));
return false;
});
But it shows undefined in alert, i have tried many solutions but nothing worked, any ideas ?
Upvotes: 0
Views: 8561
Reputation: 32
You need to set id
attribute of all the li
element like brlow :-
<li class="page-item" id="value"></li>
Upvotes: 1
Reputation: 72269
Your li
don't have id
attribute at all .It's the links inside li
which have id's.
To get them do like below:-
$('#loadMore li').on('click', function () {
alert($(this).find('a').attr('id'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="pagination " id="loadMore">
<li class="page-item"><a class="page-link prevR" href="#" id="prev">Prev<i class="fa fa-angle-left"></i></a></li>
<li class="page-item"><a class="page-link active" id="1" href="#">1</a></li>
<li class="page-item"><a class="page-link" id="2" href="#">2</a></li>
<li class="page-item"><a class="page-link" id="3" href="#">3</a></li>
<li class="page-item"><a class="page-link" id="4" href="#">4</a></li>
<li class="page-item"><a class="page-link nextR" href="#" id="next">Next<i class="fa fa-angle-right"></i></a></li>
</ul>
Upvotes: 2
Reputation: 3596
and i am trying to get id of the li element as
Your li elements doesn't have id
attr. I guess you want to get a
id
attr.
Here is how you do it, using jQuery .delegate
and .on
. We bind an event to ul#loadMore
.
// .delegate
$('#loadMore').delegate('a', 'click', function() {
var id = $(this).attr('id');
var classL = $(this).attr('class');
console.log(id, classL);
});
// .on
//$('#loadMore').on('click', 'a', function() {
//
// var id = $(this).attr('id');
// var classL = $(this).attr('class');
//
// console.log(id, classL);
//});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<ul class="pagination " id="loadMore">
<li class="page-item"><a class="page-link prevR" href="#"><i class="fa fa-angle-left"></i></a></li>
<li class="page-item"><a class="page-link active" id="1" href="#">1</a></li>
<li class="page-item"><a class="page-link" id="2" href="#">2</a></li>
<li class="page-item"><a class="page-link" id="3" href="#">3</a></li>
<li class="page-item"><a class="page-link" id="4" href="#">4</a></li>
<li class="page-item"><a class="page-link nextR" href="#"><i class="fa fa-angle-right"></i></a></li>
</ul>
Upvotes: 2
Reputation: 289
Use e.target
to get clicked element.
$('#loadMore').on('click', function (e) {
var id = $(e.target).attr('id');
console.log(id);
});
working fiddle.
Upvotes: 1
Reputation: 1643
Try the following code
$('ul.pagination li').on('click', function () {
var page = $('#page');
var msg = $('#loadMoreMsg');
alert($(this).find('a').attr('id'));
return false;
});
Here is the working jsfiddle: http://jsfiddle.net/fqyhkd30/1/
Upvotes: 4
Reputation: 5437
If it is not working at all, then I'm assuming that you are appending the list dynamically. If that is the case, then use the following:
$(document).on('click', '#loadMore', function () {
var page = $('#page');
var msg = $('#loadMoreMsg');
alert($(this).attr('id'));
return false;
});
Upvotes: 3