Замените текст li с помощью jquery без изменения других элементов

#javascript #jquery #html

#javascript #jquery #HTML

Вопрос:

Я пытаюсь заменить содержимое li и тегов.

Попробовал приведенный ниже код.

 <html>
   <head>Sample</head>
   <body>
    <a href="#"><input type="checkbox" class="layer-input-filter" name="testname">Test <span class="count">5</span>      </a>

    <a href="#"><input type="checkbox" class="layer-input-filter" name="testname1">Test1 <span class="count">10</span> </a>

    <ul>
      <li><a href="#" rel="noopener">Mixed assessment guidelines</a></li>
      <li><a href="" target="_blank" rel="noopener">Specimen </a></li>
      <li><a href="#" rel="noopener">Plagiarism </a></li>
      <li><a href="" target="_blank" rel="noopener">Download </a></li>
      <li><a href="#" rel="noopener">Qualification update</a></li>
      <li><a href="" target="_blank" rel="noopener">Specimen</a></li>
      <li><a href="#" rel="noopener">Exam guide update</a></li>
      <li><a href="" target="_blank" rel="noopener">Guide </a></li>
    </ul>

    <script>
      $(document).ready(function($) {
        var value = 0.4;
        $("body").find('li').each(function (index) {
            if ($(this).text() != '') {
              var str = $(this).clone().children().remove().end().text();
              var newstring =  str   str.substring(0, str.length  * value);
              $(this).text(newstring);
            }
        });
      });
    </script>
   </body>
</html>
  

Мне нужно заменить текст каждого li внутри тела. поэтому для этого использовался приведенный выше jquery. Но это не работает.

Пример :

 <li><a href="#" rel="noopener">Plagiarism </a></li>
  

Следует заменить как

 <li><a href="#" rel="noopener">PlagiarismPlag </a></li>
  

Первые четыре символа каждого текста li. Это ошибка в приведенном выше примере

Кто-нибудь может мне помочь с этим, пожалуйста?

Комментарии:

1. необходимо заменить эти две строки кода. var str = $(this).text(); var newstring = str str.substring(0, 4);

Ответ №1:

 $(document).ready(function($) {
  $('li>a').each(function(index, element) {
    var b = "Plag"
    var data = $(this).text(); // it will give 1,2,3 
    var position = (data.substring(0, 4))
    var output = [data, position].join('');
    $(this).empty().append("<a/>"   output);
    return index < 3;
  });
})  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="#"><input type="checkbox" class="layer-input-filter" name="testname">Test <span class="count">5</span> </a>

<a href="#"><input type="checkbox" class="layer-input-filter" name="testname1">Test1 <span class="count">10</span> </a>

<ul>
  <li><a href="#" rel="noopener">Mixed assessment guidelines</a></li>
  <li><a href="" target="_blank" rel="noopener">Specimen </a></li>
  <li><a href="#" rel="noopener">Plagiarism </a></li>
  <li><a href="" target="_blank" rel="noopener">Download </a></li>
  <li><a href="#" rel="noopener">Qualification update</a></li>
  <li><a href="" target="_blank" rel="noopener">Specimen</a></li>
  <li><a href="#" rel="noopener">Exam guide update</a></li>
  <li><a href="" target="_blank" rel="noopener">Guide </a></li>
</ul>  

Комментарии:

1. привет @Aishwarya, мне нужно добавлять «на лету» для всех элементов li

2. Нет, var b = «Plag», вы добавляете этот текст, но мне нужно извлечь первые 4 символа слова

3. привет @Aishwarya, почему вы добавляете var b = «Plag», это заменит все li, мне нужно получить текст каждого li и добавить первые 4 символа в конце каждого из li с исходным текстом

4. Прямо сейчас он добавляет плагин для всех li

5. Я проверяю 2 миллиона.

Ответ №2:

Вместо клонирования попробуйте заменить li > a текст напрямую. Нет необходимости сначала проверять, пуста ли строка, потому что, если она пуста, существующий текст (пустая строка) не изменится:

 var value = 0.4;
$("body").find('li > a').each(function(index) {
  const text = $(this).text();
  const newText = text   text.slice(0, Math.floor(text.length * value));
  $(this).text(newText);
});  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="#"><input type="checkbox" class="layer-input-filter" name="testname">Test <span class="count">5</span> </a>

<a href="#"><input type="checkbox" class="layer-input-filter" name="testname1">Test1 <span class="count">10</span> </a>

<ul>
  <li><a href="#" rel="noopener">Mixed assessment guidelines</a></li>
  <li><a href="" target="_blank" rel="noopener">Specimen </a></li>
  <li><a href="#" rel="noopener">Plagiarism </a></li>
  <li><a href="" target="_blank" rel="noopener">Download </a></li>
  <li><a href="#" rel="noopener">Qualification update</a></li>
  <li><a href="" target="_blank" rel="noopener">Specimen</a></li>
  <li><a href="#" rel="noopener">Exam guide update</a></li>
  <li><a href="" target="_blank" rel="noopener">Guide </a></li>
</ul>  

Ответ №3:

В вашем случае вы можете использовать вот так. Попробуйте это

 $(document).ready(function($) {

    $("body").find('li').each(function (e) {
        if ($(this).text() != '') {

            var str = $(this).text();
            var newstring =  str.substring(0, 4)   str;
            $(this).children('a')[0].innerHTML = newstring;
        }
    });
    
});  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="#"><input type="checkbox" class="layer-input-filter" name="testname">Test <span class="count">5</span>      </a>

    <a href="#"><input type="checkbox" class="layer-input-filter" name="testname1">Test1 <span class="count">10</span> </a>
            
    <ul>
        <li><a href="#" rel="noopener">Mixed assessment guidelines</a></li>
        <li><a href="" target="_blank" rel="noopener">Specimen </a></li>
        <li><a id="btnChange" href="#" rel="noopener">Plagiarism </a></li>
        <li><a href="" target="_blank" rel="noopener">Download </a></li>
        <li><a href="#" rel="noopener">Qualification update</a></li>
        <li><a href="" target="_blank" rel="noopener">Specimen</a></li>
        <li><a href="#" rel="noopener">Exam guide update</a></li>
        <li><a href="" target="_blank" rel="noopener">Guide </a></li>
    </ul>  

Комментарии:

1. привет @Darshana, это также заменит тег

2. Я это исправил. Проверьте @jafarpinjar

Ответ №4:

Я надеюсь помочь вам с этим кодом :

     var str = $(this).find('a').text();
    var newStr = str   str.substr(0, 4);
    $(this).find('a').text(newStr)
  

пример кода: https://jsfiddle.net/3w4j8q16/1 /

Комментарии:

1. Я прошу текст li ,

2. @jafarpinjar да, вы видели пример кода, который я написал? Я изменил текст li.