如何才能知道点击了哪个锚标签?

时间:2011-11-28 10:50:26

标签: javascript jquery

我正在动态创建我的内容,当点击锚标记时,会调用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>&gt;'+productname+'&gt;Java Properties</div>'+
            //some other stuff
        '</div>')       
    .appendTo('#detailTable');

更新:

我的问题很简单

  1. a内会有多个detailTable元素。
  2. 如何在某些js函数中了解哪个a元素被点击了?

4 个答案:

答案 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>&gt;'+productname+'&gt;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>&gt;' + productname + '&gt;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");
        }
    });
});

jsfiddle

上查看

答案 3 :(得分:0)

你必须遍历使用jquery的每个元素&#34;每个&#34;功能。通过&#34;这个&#34;你可以得到点击对象。