0

私はこの2つの関数(関数内の関数)を持っていますが、indxcが親関数からIDをキャッチできないようであるため、2番目の関数は起動していません。

$(".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()on()は Jquery で減価償却されるため、代わりに使用できます。

alertまた、 2番目の関数の内側に試してみてください。

$(".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 delegationですclosest existing parent。あなたのコードでは取得するのが難しいのでdocument、これはページ内のすべての要素の親であるため、自分自身に委任しました。

于 2013-03-05T10:46:37.090 に答える
0

関数内からクリック関数を削除して外部に書き込むだけで動作するはずです..live非推奨なので、私は使用していonます..

あなたの問題.rischは..クリックイベント内にクリックイベントがありました..クリックイベントを発生.guddiさせるには、一度に2回クリックすることはできないため、クリックする必要がありました...別々に保持する..今ではドキュメントができます各クリックイベントを見つけて、それに応じて起動する...だからうまくいく

$(".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 に答える