我无法从调用相同ajax函数的链接获取id。动态生成30多个链接,如下所示:
<a href="javascript:void(0)" id="105">Item 105</a>
<a href="javascript:void(0)" id="379">Item 379</a>
<a href="javascript:void(0)" id="534">Item 534</a>
这是我在谷歌搜索后的最新尝试,包括this。
$(this).click(function() {
var $id = $(this).attr('id');
$.ajax({
url: "somefile.asp",
data: {
sellerid: <%=sellerid%>,
uid: <%=uid%>,
itinid: $id
},
success: function(result) {
$("#content").html(result);
}
});
});
当我用例如:
进行测试时,每个链接的ajax工作正常(但结果固定)var $id = 379;
答案 0 :(得分:1)
我发布了答案,得到了好几条评论的帮助,受到其他2人的阻碍,IMHO忘记论坛是为了帮助别人不批评。这花费了我-4分,但仍然值得!
$('#templatelist a').click(function(){
var $id = $(this).attr('id');
//var $id = $( this ).data( 'id' );
$.ajax({url: "trips-check.asp", data: {sellerid: '<%=sellerid%>', uid: '<%=uid%>', itinid: $id}, success: function(result){
$("#content").html(result);
}});
});
总之,$(this)在启用ajax方面起作用,但没有得到变量$ id。 $(&#39; a&#39;)完全运行,但链接必须包含在带有id templatelist的div中,因此只有那些链接触发了ajax。基本的东西是的,但对新手来说还是新的。
答案 1 :(得分:0)
注意#1:
如果您的商品是动态生成的,请不要使用
click
或bind
。注意#2:
如果使用旧的jquery版本,则应使用
live
(版本已弃用:1.7,已删除:1.9 )。
好吧,您可以使用live
或on
(最佳选项),也许您可以修复它。
示例(最佳方式):
你html(生成动态):
<ul id="mylist">
<li><a href="" id="...">...</a></li>
<li><a href="" id="...">...</a></li>
<li><a href="" id="...">...</a></li>
<li><a href="" id="...">...</a></li>
<li><a href="" id="...">...</a></li>
</ul>
你JS:
$('#mylist').on('click', 'a', function(){
alert( $(this).attr('id') );
})
旧方式(糟糕的方式; 已弃用):
$('#mylist li a').live('click', function(){
alert( $(this).attr('id') );
})
在这里学习: http://api.jquery.com/on/
在这里:https://stackoverflow.com/a/11878976/901197
完整示例:
JS:
$(document).ready(function(){
var elements = [
{id:1, text: "A", data: 'Hi'},
{id:2, text: "B", data: 'Hello'},
{id:3, text: "C", data: 'Hola'},
{id:4, text: "D", data:'Ciao'},
{id:5, text: "E", data:'Priviet'},
{id:6, text: "F", data: 'Bonjour'},
{id:7, text: "G", data:'Hallo'},
{id:8, text: "H", data:'Olá'}
];
$.each(elements, function( index, element ){
var li = document.createElement('li'),
a = document.createElement('a');
$(a).attr('id', element.id)
$(a).data('hello', element.data)
$(a).text(element.text)
$(li).append(a)
$('#dynamics').append( li )
})
$('#dynamics').on('click', 'a', function(){
var self = $(this);
alert('You clicked on ' + self.text() + '. ' + self.data('hello') + ' id #' + self.attr('id') );
})
});
HTML:
<ul id="dynamics"></ul>
试试这里:
答案 2 :(得分:0)
为了html有效性而生成data-id属性,而不仅仅是id
<a href="javascript:void(0)" data-id="105">Item 105</a>
<a href="javascript:void(0)" data-id="379">Item 379</a>
<a href="javascript:void(0)" data-id="534">Item 534</a>
以这种方式为生成的链接注册事件
$( 'document' ).on( 'click' , 'a[data-id]', function( evt ) {
evt.preventDefault();
var $id = $( this ).data( 'id' );
$.post( 'somefile.asp' , { sellerid: '<%=sellerid%>',
uid: '<%=uid%>',
itinid: $id
} , function( result ) {
$( "#content" ).html( result );
}, 'html');
});