1

リンクを作成するjQueryがいくつかありますが、リンクはより多くのjQueryをトリガーするはずですが、そうではありません。コードは次のとおりです。

$(".divisionLinks").click(function () { 
  $('.show_hide_division').show();
  $('.show_hide_main').html($(this).html()+ " is Selected");
  //Load the division xml
  var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async="false";
  xmlDoc.load("xml//division//"+ $(this).html() + ".xml");
  theEnvNodes = xmlDoc.getElementsByTagName('ENVIRONMENT');
  //Make the html
  theNewHTML = "<ul>";
    for (i = 0; i<theEnvNodes.length; i++){
    theNewHTML = theNewHTML + "<li><a class=\"environmentLinks\" href=\"#\">";
    theNewHTML = theNewHTML + theEnvNodes[i].childNodes[0].childNodes[0].nodeValue;
    theNewHTML = theNewHTML + "</a></li>";
    }
  theNewHTML = theNewHTML + "</ul>"; 
  $('.environmentButtons').html(theNewHTML);
});
$(".environmentLinks").click(function () { 
  $('.show_hide_environment').show();
  $('.show_hide_division').html($(this).html()+ " is Selected");
});

したがって、分割リンクは機能しますが、環境リンクは機能しません。私はそれが.environmentLinkクラスにインデックスを付けるjQueryで何かかもしれないと読んでいます。しかし、私は知りませんし、回避策も知りません。事前にご協力いただきありがとうございます。

4

3 に答える 3

1

.environmentLinks を動的に追加しているため、ページが読み込まれたときにこれらのリンクが存在しないため、クリック イベントは添付されません。jQuery の最新バージョンを使用している場合は.on()、クリック イベントを .environmentLinks リンクにバインドするために使用します。

$("body").on('click', '.environmentLinks', function () { 
  $('.show_hide_environment').show();
  $('.show_hide_division').html($(this).html()+ " is Selected");
});

.environmentLinks理想的には、 $("body") をbody 要素よりも近い親要素に置き換えます。

イベント ハンドラーは、現在選択されている要素にのみバインドされます。これらは、コードが .on() を呼び出す時点でページに存在している必要があります。要素が存在し、選択できることを確認するには、ページの HTML マークアップにある要素のドキュメント対応ハンドラー内でイベント バインディングを実行します。新しい HTML がページに挿入されている場合は、要素を選択し、新しい HTML がページに配置された後にイベント ハンドラーを添付します。または、次に説明するように、委任されたイベントを使用してイベント ハンドラーをアタッチします。

于 2012-07-04T20:33:05.803 に答える
1

たとえば、次を使用する必要があります。

$(".environmentLinks").live('click', function () { 
  $('.show_hide_environment').show();
  $('.show_hide_division').html($(this).html()+ " is Selected");
});

また:

$("body").on('click', ".environmentLinks", function () { 
  $('.show_hide_environment').show();
  $('.show_hide_division').html($(this).html()+ " is Selected");
});
于 2012-07-04T20:30:11.947 に答える
0

環境リンクが後で生成され、クリック機能が DOM にバインドされているためだと思います。

これを試して:

$(".environmentLinks").live("click", function(){

 $('.show_hide_environment').show();
 $('.show_hide_division').html($(this).html()+ " is Selected");
});

これにより、クリック イベントが「更新」されます。

于 2012-07-04T20:32:51.117 に答える