Выкарыстанне «гэта», каб знайсці апошнюю радок у загалоўку табліцы

Я выкарыстоўваю stupidtable ( http://joequery.github.io/Stupid-Table-Plugin/ </а>), каб дадаць парадак табліцы. Я выкарыстоўваю функцыю зваротнага выкліку, каб дадаць адпаведную стрэлку уверх ці ўніз, каб паказаць, які слупок выкарыстоўваецца для сартавання і ці з'яўляецца яна па ўзрастанні або па змяншэнні.

Арыгінальны апрацоўшчык падзей выкарыстоўваецца код:

table.bind('aftertablesort', function (event, data) {

   //data.column - the index of the column sorted after a click
   //data.direction - the sorting direction (either asc or desc)

    var th = $(this).find("th");
    th.find(".arrow").remove();
    var arrow = data.direction === "asc" ? "↑" : "↓";
    th.eq(data.column).append('' + arrow +'');
});

Гэта выдатна працуе, калі ёсць толькі адна радкі загалоўкаў, але калі ёсць некалькі радкоў, гэта не таму, што яна знаходзіць першы радок загалоўка, не апошняя.

Я з усіх сіл, каб даведацца, як знайсці ніжнюю радок, вынікаючы іншай тэме я паспрабаваў:

var th = $(this + ' thead tr:last').find("th");

Але гэта дае сінтаксічную памылку, я думаю, таму што я не выкарыстоўваю "гэта" правільна. Можа хто-небудзь дапамагчы?

дзякуй,

Стеф

0
гэта ставіцца да DOMNode. Вы павінны правільна выкарыстоўваць $ (гэта) .find або $ (гэта) .is замест $ (гэта + '...') што няправільна Таму што вы падштурхоўваюць месца (гэта) ў радок [аб'ект HTMLTableElement] ...
дададзена аўтар andlrc, крыніца
Як толькі я прачытаў гэта, заззяла святло, я пайшоў і напісаў вар е = $ (гэта) .find ( «THEAD тр: апошні й»); і ён працаваў выдатна. Вярнуўся і ўбачыў, што гэта было прапанавана ў якасці адказу, як добра!
дададзена аўтар Essex Steph, крыніца
Як толькі я прачытаў гэта, заззяла святло, я пайшоў і напісаў вар е = $ (гэта) .find ( «THEAD тр: апошні й»); і ён працаваў выдатна. Вярнуўся і ўбачыў, што гэта было прапанавана ў якасці адказу, як добра!
дададзена аўтар Essex Steph, крыніца

7 адказы

Вы не можаце аб'яднаць аб'ект са радком, каб пабудаваць селектар. паспрабуйце гэта:

var th = $(this).find('thead tr:last').find("th");
2
дададзена

this is not a string, but a DOM element.

Вы можаце выкарыстоўваць яго ў якасці селектара кантэксту, як гэта:

var th = $('thead tr:last', this).find("th");

Але .find хутчэй, чым кантэкст, так што выкарыстоўвайце гэта:

var th = $(this).find("thead tr:last th");
1
дададзена
Вось тэст jsperf.com/contet-vs-find
дададзена аўтар BrunoLM, крыніца
<�Код> $ (селектар, кантэкст) проста перапісванне кода на <> $ (кантэкст) .find (селектар) ў крыніцы. Я з цяжкасцю знайсці вялікі станоўчы эфект прадукцыйнасці тут. Але так як jQuery выкарыстоўвае $ (кантэкст) .find (селектар) Я лічу, што гэта лепшая практыка, каб зрабіць гэта.
дададзена аўтар andlrc, крыніца
Як гэта тое, што я кажу: james.padolsey.com/jquery /#v=git&fn=jQuery.fn.init Глядзіце ў раздзеле //Handle: $ (выраз, $ (...))
дададзена аўтар andlrc, крыніца
Ён, праверце гэтую спасылку: addyosmani.com/blog/8-jquery-performance- парады Крок № 6. артыкул старая, але яна па-ранейшаму дакладна. Выкарыстоўваючы селектар кантэксту з'яўляецца выклікам дапаўненні без неабходнасці функцыі.
дададзена аўтар Karl-André Gagnon, крыніца

this is not a string, but a DOM element.

Вы можаце выкарыстоўваць яго ў якасці селектара кантэксту, як гэта:

var th = $('thead tr:last', this).find("th");

Але .find хутчэй, чым кантэкст, так што выкарыстоўвайце гэта:

var th = $(this).find("thead tr:last th");
1
дададзена
Вось тэст jsperf.com/contet-vs-find
дададзена аўтар BrunoLM, крыніца
<�Код> $ (селектар, кантэкст) проста перапісванне кода на <> $ (кантэкст) .find (селектар) ў крыніцы. Я з цяжкасцю знайсці вялікі станоўчы эфект прадукцыйнасці тут. Але так як jQuery выкарыстоўвае $ (кантэкст) .find (селектар) Я лічу, што гэта лепшая практыка, каб зрабіць гэта.
дададзена аўтар andlrc, крыніца
Як гэта тое, што я кажу: james.padolsey.com/jquery /#v=git&fn=jQuery.fn.init Глядзіце ў раздзеле //Handle: $ (выраз, $ (...))
дададзена аўтар andlrc, крыніца
Ён, праверце гэтую спасылку: addyosmani.com/blog/8-jquery-performance- парады Крок № 6. артыкул старая, але яна па-ранейшаму дакладна. Выкарыстоўваючы селектар кантэксту з'яўляецца выклікам дапаўненні без неабходнасці функцыі.
дададзена аўтар Karl-André Gagnon, крыніца

if this referes to your table you should use find

var th = $(this).find('thead tr:last')

наступная радок

$(this + ' thead tr:last')

Не будзе працаваць, таму што гэта з'яўляецца аб'ектам, і вы змешвае са радком, якая прывядзе да

$("[object HTMLTableElement] thead tr:last")
0
дададзена

if this referes to your table you should use find

var th = $(this).find('thead tr:last')

наступная радок

$(this + ' thead tr:last')

Не будзе працаваць, таму што гэта з'яўляецца аб'ектам, і вы змешвае са радком, якая прывядзе да

$("[object HTMLTableElement] thead tr:last")
0
дададзена

Вы ведаеце, што THEAD для часткі загалоўка табліцы. Таму, калі пытаюцца «ніжні шэраг» вы ўпэўненыя, што гэта загаловак вы хочаце ці цела?

Знайсці апошнюю радок загалоўка, калі гэта з'яўляецца бацькам.

var last_header_row = $(this).find("thead").last("tr");

Для таго, каб знайсці апошнюю радок у целе, калі гэта з'яўляецца бацькам.

var last_body_row = $(this).find("tbody").last("tr");

Звярніце ўвагу, што гэта спасылка ў кантэксце функцыі зваротнага выкліку для падзеі. Не ведаючы, што гэта кантэкст, мы не можам гарантаваць, што гэта апорны элемент DOM.

If you have a reference from inside the table, where this is a tr or something. Replace the call to find(..) with closest(..)

0
дададзена

Вы ведаеце, што THEAD для часткі загалоўка табліцы. Таму, калі пытаюцца «ніжні шэраг» вы ўпэўненыя, што гэта загаловак вы хочаце ці цела?

Знайсці апошнюю радок загалоўка, калі гэта з'яўляецца бацькам.

var last_header_row = $(this).find("thead").last("tr");

Для таго, каб знайсці апошнюю радок у целе, калі гэта з'яўляецца бацькам.

var last_body_row = $(this).find("tbody").last("tr");

Звярніце ўвагу, што гэта спасылка ў кантэксце функцыі зваротнага выкліку для падзеі. Не ведаючы, што гэта кантэкст, мы не можам гарантаваць, што гэта апорны элемент DOM.

If you have a reference from inside the table, where this is a tr or something. Replace the call to find(..) with closest(..)

0
дададзена