0

我有这两个函数(函数中的函数),但第二个函数没有触发,因为似乎 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();
    });
});
4

4 回答 4

2

live()在 Jquery 中已贬值,因此您可以on()改用,例如

并尝试alert在第二个功能内。

$(".risch").on('click',function(){
   alert($(this).attr("id"));
});
于 2013-03-05T10:48:38.457 回答
1

你可以这样做:

$(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 delegationclosest existing parent. 在你的代码中很难得到,所以这就是为什么我委托给document它自己,因为这是页面中所有元素的父级。

于 2013-03-05T10:46:37.090 回答
0

只需从函数内部删除 click 函数并将其写入外部,这应该可以工作..live已弃用,所以我正在使用on..

你的问题是..你在点击事件中有点击事件..所以要触发.risch点击事件你必须点击.guddi它又是不可能的,因为你不能一次点击两次......分开保存..现在文件可以找到每个点击事件并相应地触发它......所以它可以工作

$(".guddi").on('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").on('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();
 });
于 2013-03-05T10:41:28.770 回答
0

我发现了我的错误。谢谢@Devang Rathod ...这是主提示:)

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>';
  }

.risch 位于错误的 HTML 元素中

于 2013-03-05T11:29:54.923 回答