2017-09-22 20 views
0
<ul class="dropdown-menu" id="parent">  
@foreach($cat as $category) 

    <li class="dropdown-submenu"> 
     <a id={{$category->id}}>{{$category->category_name}}</a> 
    </li> 

@endforeach 

这是我的脚本,它总是给我,是1如何获得一个动态的属性值

我要永远改变来自数据库

$("#parent li a").click(function(){ 
    var id = $('#parent li a').attr('id'); 
    alert(id); 
}); 
+1

var id = $(this).attr('id'); – okante

+0

'.attr()'将获得匹配元素集合中第一个元素的属性值。你可以在Jquery API上找到它https://api.jquery.com/attr/ – shanechiu

+0

@Arslan Akram,请接受所有最佳答案。 –

回答

7

更改相同的数值您jQuery的功能是这样的:

$("#parent li a").click(function(){ 

    var id = $(this).attr('id'); // use `this` 

    alert(id); 
}); 

注意 你已经使用代码将始终考虑第一个<li>的第一个<a>,这是错误的。

this将引用被点击的元素。因此你会得到正确的价值。

+0

这将解决问题。 –

1

click事件中,你可以使用$(this)作为点击的元素:

$('#parent li a').click(function() { 
    var id = $(this).attr('id'); 
    alert(id); 
}); 
4

值来自数据库

我会建议你使用data-*自定义属性仍然存在,从而可以任意的数据在当前元素上下文中使用.data(key)获取

$("#parent li a").click(function(){ 
    var id = $(this).data('id');  
}); 
<li class="dropdown-submenu"> 
    <a data-id="{{$category->id}}">{{$category->category_name}}</a> 
</li> 
1

如果您单击处理this参考中使用 - 这是在这种情况下,点击的元素,比你可以访问正确的id属性你正在寻找。

$("#parent li a").click(function(){ 
    var id = $(this).attr('id'); 
    alert(id); 
});