jQuery链接不起作用

时间:2012-07-04 20:26:52

标签: javascript jquery html

我有一些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类的东西。但我不知道,也不知道有什么工作要做。 感谢您的帮助。

3 个答案:

答案 0 :(得分: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");
});

答案 1 :(得分:1)

由于您正在动态添加.environmentLinks,因此您加载的click事件不会附加,因为在加载页面时这些链接不存在。如果您使用的是最新版本的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之后附加事件处理程序   放入页面。或者,使用委派事件来附加事件   处理程序,如下所述。

答案 2 :(得分:0)

这是因为环境链接是后来生成的,我认为你的点击功能绑定到了DOM。

试试这个:

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

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

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