我在尝试存储我使用ajax post响应创建的一些动态链接的url参数时遇到了一些麻烦。 ajax帖子工作正常,名称和子类型变量正在从ajax响应中正确填充。现在我想要发生的是用户点击其中一个生成的网址,网址内的参数,即subgenre =" blah",将被发送到数据库并存储。我遇到的问题是标准事件点击功能不能在文档就绪功能的内部或外部工作。
$(document).ready(function() {
$.each(data, function() {
$('#artist-suggestions').append('<li><a href="http://...../100.php" artist="'+ this.name +'" subgenre="'+ this.subgenre +'" onclick="artistGen()">' + this.name + this.new + '</a></li>');
});
});
然后我创建了一个onclick函数,如下所示,但我不能使用&#34;这个&#34;查询,因为它在文档范围之外。我不得不将onclick函数放在文档就绪函数之外,否则它将无效。
function artistGen(){
alert('dfdsf');
};
我在这里错过了什么或我做错了什么?
答案 0 :(得分:1)
您可以在创建每个元素时在onclick函数中传递这些元素。
$(document).ready(function() {
$.each(data, function() {
artist = this.name;
$('#artist-suggestions').append('<li><a href="http://...../100.php" artist="'+ this.name +'" subgenre="'+ this.subgenre +'" onclick="artistGen(' + this.Blah1 + ',' + this.Blah2' + ')">' + this.name + this.new + '</a></li>');
});
})
function artistGen(Blah1, Blah2){
saveData(Blah1, Blah2);
alert('dfdsf');
};
答案 1 :(得分:0)
这就是在这些事件属性中调用的函数必须在全局(或在那里定义)而不是在任何包装函数中定义的函数。更好的解决方案是附加事件处理程序。
$(document).ready(function() {
function artistGen(){
alert(this.href);
};
$.each(data, function() {
var $li = $('<li><a href="http://...../100.php" artist="'+ this.name +'" subgenre="'+ this.subgenre +'">' + this.name + this.new + '</a></li>');
$li.find('a').on('click', artistGen);
$('#artist-suggestions').append($li)
});
});
答案 2 :(得分:0)
在动态元素的jQuery中,您可以以这种方式使用click事件
$('#artist-suggestions li').on('click', 'a', function() {
// do something
});
或者你可以继续你的方式,通过使用一个函数,但只是添加一个参数到该函数 喜欢
function artistGen(Artist){
// do something
};
答案 3 :(得分:0)
您需要从artistGen()
.load()
功能
$(window).load(function(){
$('#artist-suggestions').append('<li><a href="http://...../100.php" artist="jim" subgenre="subgenre" onclick="artistGen()">jim new</a></li>');
});
function artistGen(){
alert('dfdsf');
}
<强> JSFIDDLE DEMO 强>