Append text to an attribute rather than replacing it?

后端 未结 3 1092
梦毁少年i
梦毁少年i 2021-02-07 02:01

I want to append some text to the title attribute of all elements of a certain class.

相关标签:
3条回答
  • 2021-02-07 02:29

    JQuery has come a ways. There's a version of .attr() that takes a function as the value argument:

    $('.theclass').attr('title', (i, value) => `${value || ""}appended text`);
    

    i is the index of the attribute, value is the current value of the attribute... which might not be set, hence the value || "" expression, to avoid converting undefined into the string 'Undefined' uglily.

    0 讨论(0)
  • 2021-02-07 02:39

    In that context, $(this) is not the element of $('.theclass'). Maybe you want to use each:

    $('.theclass').each(function() {
        $(this).attr("title", $(this).attr("title") + "Appended text.");
    });
    
    0 讨论(0)
  • 2021-02-07 02:46

    I know this question is 7 years old. Just in case someone came across this question, here's the solution without using .each:

    $('.theclass').attr("title", function() { return $(this).attr("title") + "Appended text." });
    
    0 讨论(0)
提交回复
热议问题