我正在动态创建我的内容,当点击锚标记时,会调用navigate()
函数。如何确定点击了哪个锚点标记?
function navigate()
{
//var location=$(this).attr("id");
switch(location)
{
/*case "Configuration": $('#detailTable').empty();
$('#detailTable').append(navigateConfig);
break;*/
default: alert(location+" a tag was clicked");
}
}
$('#detailTable').empty();
$('<div width="100%">')
.attr('id','javainfoSpan')
.html('<div class="titleBlue"><a href="javascript:navigate();">Configuration</a>>'+productname+'>Java Properties</div>'+
//some other stuff
'</div>')
.appendTo('#detailTable');
更新:
我的问题很简单
a
内会有多个detailTable
元素。a
元素被点击了?答案 0 :(得分:2)
我看到你现在在做什么,你正在动态创建a
元素。如果你打电话给javascript:navigate()
,那么你使用的是标准的javascript,而不是jquery(jquery需要使用$(this)
选择器)。
相反,你应该这样:
$("body").on('click', 'a', function() {
var location = $(this).attr('id');
switch(location){ /* ... */ }
});
这将捕获jquery中的click事件,您可以动态创建任何元素,也可以在页面加载时已经存在。
请注意,如果您使用id
,则需要在id
元素上设置a
attr。
答案 1 :(得分:1)
试试这个:
function navigate($element) {
//var location = $element.attr("id");
switch (location) {
/*case "Configuration": $('#detailTable').empty();
$('#detailTable').append(navigateConfig);
break;*/
default: alert(location+" a tag was clicked");
}
}
$('#detailTable').empty();
$('<div width="100%">')
.attr('id','javainfoSpan')
.html('<div class="titleBlue"><a href="#">Configuration</a>>'+productname+'>Java Properties</div>'+
//some other stuff
'</div>')
.appendTo('#detailTable');
// Pre jQuery 1.7...
$(".titleBlue").delegate("A", "click", function() {
navigate($(this));
}
// jQuery 1.7...
$(".titleBlue A").on("click", function() {
navigate($(this));
}
我更改了处理程序以使用jQuery的delegate()
方法(或jQ 1.7+的on()
方法)。使用它可以更容易地将导致事件的元素传递给您的处理函数,它将其作为$element
变量。
然后您可以根据需要使用此功能。
答案 2 :(得分:1)
以下是处理此问题的方法:
$(document).ready(function() {
var productname = "mytest";
$('#detailTable').empty();
$('<div width="100%">').attr('id', 'javainfoSpan').html('<div class="titleBlue"><a href="#" id="'+productname+'" class="navigate">Configuration</a>>' + productname + '>Java Properties</div>' + '<table id="list1" width="100%"></table>' + '<div id="gridpager"></div>' + '</div>').appendTo('#detailTable');
$(".navigate").click(function() {
var location = $(this).attr("id");
switch (location) {
case "Configuration":
$('#detailTable').empty();
$('#detailTable').append(navigateConfig);
break;
case "mytest":
alert("My test was clicked");
break;
default:
alert(location + " a tag was clicked");
}
});
});
上查看
答案 3 :(得分:0)
你必须遍历使用jquery的每个元素&#34;每个&#34;功能。通过&#34;这个&#34;你可以得到点击对象。