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");
});

因此,除法链接有效,但环境链接无效。我一直在阅读它可能与 jQuery 索引 .environmentLink 类有关。但我不知道,也不知道解决方法。提前感谢您的帮助。

4

3 回答 3

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 回答
1

由于您正在动态添加 .environmentLinks,因此不会附加单击事件,因为加载页面时这些链接不存在。如果您使用的是最新版本的 jQuery,请使用.on()将 click 事件绑定到 .environmentLinks 链接。

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

理想情况下,您希望将 $("body") 替换为.environmentLinks比 body 元素更接近它的父元素。

事件处理程序仅绑定到当前选定的元素;当您的代码调用 .on() 时,它们必须存在于页面上。为确保元素存在并且可以被选择,请在页面 HTML 标记中的元素的文档就绪处理程序内执行事件绑定。如果将新 HTML 注入页面,请在将新 HTML 放入页面后选择元素并附加事件处理程序。或者,使用委托事件来附加事件处理程序,如下所述。

于 2012-07-04T20:33:05.803 回答
0

这是因为环境链接是稍后生成的,并且您的点击功能绑定到 DOM,我认为。

尝试这个:

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

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

这将“刷新”您的点击事件。

于 2012-07-04T20:32:51.117 回答