Jquery - обрезать внутренний HTML? - PullRequest
2 голосов
/ 31 января 2012

Мне как-то нужно trim() innerHTML моего контента ... поэтому у меня есть что-то вроде этого:

<div>
     <b>test</b>

123 lol
          </div>

В основном я хочу избавиться от пробела, который находится ТОЛЬКО между <div> и следующим символом , и от пробела непосредственно перед закрывающим </div>.

Таким образом, результат будет:

<div><b>test</b>

123 lol</div>

Ответы [ 3 ]

4 голосов
/ 31 января 2012
var $mydiv = $('#mydiv');
$mydiv.html($.trim($mydiv.html());

Это должно взять содержимое любого элемента, вырезать из него пробел и сбросить его как содержимое.

1 голос
/ 31 января 2012

Я действительно не знаю, почему вы хотите это сделать, но похоже, что вы используете jquery, так что вы можете использовать помощник обрезки:

var $stuff = $(...the messy html you have above including the outer div);
var tidy = $.trim( $stuff.html() );
// tidy has no more div wrapper so you can do this:
return "<div>" + tidy "</div>"
// or this (but i dunno that it won't pad it again)
$stuff.html(tidy)
0 голосов
/ 09 марта 2016

Вы можете легко написать плагин jQuery для этого. Для этого я создал как статический, так и экземплярный метод.

Вы можете переключать переменную __DEBUG__TRIM_TYPE ниже, чтобы изменить технику. Каждый случай даст одинаковый результат. Это разные способы достижения одного и того же результата.

// jQuery Plugin
// =============================================================================
(function($) {
  $.fn.trimHtml = function() {
    return this.html(function(index, html) {
      return $.trim(html);
    });
  };
  $.trimHtml = function(selector) {
    return $(selector || '*').filter(function() {
      return $(this).data('trim') === true;
    }).trimHtml();
  }
}(jQuery));

// Example
// =============================================================================
$(function() {
  var __DEBUG__TRIM_TYPE = 1; // You can change this to values between 1-3.
  
  switch (__DEBUG__TRIM_TYPE) {
      // Option #1. Select elements by a selector.
      case 1:
        $('.pre-block[data-trim="true"]').trimHtml();
        break;

      // Option #2. Filter elements by a selector and their data.
      case 2:
        $('.pre-block').filter(function() { return $(this).data('trim'); }).trimHtml();
        break;

      // Option #3. Apply function to all elements where the "trim" data is TRUE.
      case 3:
        $.trimHtml();
        break;
  }
});
h1 { font-size: 1.5em; }
.pre-block { display: inline-block; white-space: pre; border: thin solid black; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.js"></script>

<h1>Not Trimmed</h1>
<div class="pre-block" data-trim="false">
  Text not to be trimmed.
  
</div>

<h1>Already Trimmed</h1>
<div class="pre-block" data-trim="false">Text already trimmed.</div>

<h1>Trimmed</h1>
<div class="pre-block" data-trim="true">
  Text that was trimmed.
  
</div>
...