我有这两个函数(函数函数),但第二个函数没有触发,因为似乎indxc无法从父函数中捕获id。
$(".guddi").live('click',function(){
$("#licolor").show();
var indx = $(this).attr("id");
if (indx < 0) {
$('#color').css('display','none');
return;
}
var item = '<div class="fn_menu_title pointer risch"><span>Choose color</span></div><ul class="fn_menu">';
for (g=0; g < menu[indx].color.length; g++){
item += '<li><span class="pointer search_link" searchkey="'+ leString +' xdz'+ menu[indx].wert + ' xdz'+ menu[indx].color[g].farbe +'" id="'+[g]+'">' + menu[indx].color[g].farbe + '</span></li>';
}
$("#color").html(item+'</ul>').fadeIn();
$("#color").menuFlip();
$(".risch").live('click',function(){
$("#liqual").show();
var indxc = $(this).attr("id");
if (indxc < 0) {
$('#qual').css('display','none');
return;
}
var item2 = '<div class="fn_menu_title pointer"><span>Choose quality</span></div><ul class="fn_menu">';
for (i=0; i < menu[indx].color[indxc].quality.length; i++){
item2 += '<li><span class="pointer search_link" searchkey="'+ leString +' xdz'+ menu[indx].color[indxc].quality[i].wert +'">' + menu[indx].color[indxc].quality[i].wert + '</span></li>';
}
$("#qual").html(item2+'</ul>').fadeIn();
$("#qual").menuFlip();
});
});
qazxsw poi在Jquery中被弃用,所以你可以改用qazxsw poi,例如:
并尝试在第二个功能内live()
。
on()
你可以这样做:
alert
把它放在外面并这样做:
$(".risch").on('click',function(){
alert($(this).attr("id"));
});
你需要$(document).on('click', ".guddi", function(){
// all the stuff but not the second elem clik event
});
到$(document).on('click', ".risch", function(){
// all stuff related to this event.
});
。在你的代码中很难得到这就是为什么我委托给event delegation
它自己,因为这是页面中所有元素的父亲。
我发现了自己的错误。谢谢@Devang Rathod ......这是大师提示:)
closest existing parent
}
改变了这个
document
.risch是错误的HTML元素
只需从函数内部删除click函数并将其写在外面,这应该可以工作。不推荐使用var item = '<div class="fn_menu_title pointer risch"><span>Choose color</span></div><ul class="fn_menu">';
for (g=0; g < menu[indx].color.length; g++){
item += '<li><span class="pointer search_link" searchkey="'+ leString +' xdz'+ menu[indx].wert + ' xdz'+ menu[indx].color[g].farbe +'" id="'+[g]+'">' + menu[indx].color[g].farbe + '</span></li>';
所以我使用的是var item = '<div class="fn_menu_title pointer"><span>Choose color</span></div><ul class="fn_menu">';
for (g=0; g < menu[indx].color.length; g++){
item += '<li><span class="pointer search_link risch" searchkey="'+ leString +' xdz'+ menu[indx].wert + ' xdz'+ menu[indx].color[g].farbe +'" id="'+[g]+'">' + menu[indx].color[g].farbe + '</span></li>';
}
..
你的问题是..你点击事件里面有点击事件..所以要点击live
点击事件你必须点击on
这反过来是不可能的,因为你不能一次点击两次...保持单独..现在文档可以找到每个点击事件并相应地触发...所以它的工作原理
.risch