Make table row clickable

前端 未结 4 514
Happy的楠姐
Happy的楠姐 2021-01-15 19:22

I have a table row that has background color on hover. When user clicks within the background color area, it should grab the link of the anchor tag inside the row and take t

相关标签:
4条回答
  • 2021-01-15 19:42

    Ok first of all there's no need to specify a tr in the selector if you use an id anyway. And if you want to you should write that together without whitespace as the tr got that id.

    Second, you need to use this and find() to select the first link inside the clicked table-row and get it's href attribute:

    $('tr#ClickableRow').click(function () {
      var url = $(this).find('a:first').attr('href');
      window.location.href = url;
    });
    

    The following also works:

    location = $(this).find('a:first').attr( 'href' );
    

    See: Javascript: Setting location.href versus location

    0 讨论(0)
  • 2021-01-15 19:49

    how about:

    $('#ClickableRow').click(function () {
         window.location = $('a:first', this).attr('href');
    });
    
    0 讨论(0)
  • 2021-01-15 19:57

    you need to also remove space between tr and #ClickableRow other wise it will take as children element.

    $('tr#ClickableRow').click(function () {
        window.location = $(this).find('a').attr("href");
    });
    
    0 讨论(0)
  • 2021-01-15 20:00

    In your case

    $('#ClickableRow').click(function () {
       window.location = $("#ClickableRow a:first").attr('href');
    });
    

    You can test on http://jsfiddle.net/.

    To make it look like clickable you can add this

    JavaScript:

    $('#ClickableRow').hover(
        function () {
            if ($(this).find("th").length > 0) return;
            $(this).addClass("gridRowHover");
        },
        function () { $(this).removeClass("gridRowHover"); }
    );
    

    CSS

    .gridRowHover{
        cursor: pointer;
     }
    

    Generic function, to make any row of table clickable

    function bindRowClick(itemId, eventHandler) {  
        var binder = "tr"; 
        $("#" + itemId).find(binder).click(eventHandler); 
    }
    

    ItemId will be your table id and eventHandler is the function to be executed.

    0 讨论(0)
提交回复
热议问题