我有一些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类的东西。但我不知道,也不知道有什么工作要做。 感谢您的帮助。
答案 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");
});
这将“刷新”您的点击事件。