Что самый легкий путь состоит в том, чтобы обмениваться строкой HTML в таблице с помощью jQuery (не, перетаскивают),

Каков самый легкий путь в jQuery для взятия всего HTML для a <TR> (включая сам TR, не TR innerhtml) и подкачка это с другим? Я бездельничаю с replaceWith, но это подкачивает innerHtml, и я хочу подкачать целый HTML TR. кажется, что это должна быть легкая задача для jQuery. Я думаю, что существует, должен быть способ сослаться на TRS индексом и столь же легкий как:

temp = table.children[4];
table.children[4] = table.children[7]
table.children[7] = temp;

конечно, это - псевдокод, но я ищу что-то столь же легкое как это в jQuery...

5
задан Brian Tompsett - 汤莱恩 20 May 2017 в 16:01
поделиться

3 ответа

Лучше всего было бы обернуть его в пользовательскую функцию многократного использования:

$.fn.swap = function(other) {
    $(this).replaceWith($(other).after($(this).clone(true)));
};

Для того, чтобы его можно было использовать как:

one.swap(other);

Используется клон(истина) для того, чтобы события также принимались во внимание.

Вот SSCCE, который демонстрирует смену строк со следующей строкой (если таковая имеется):

<!doctype html>
<html lang="en">
    <head>
        <title>SO question 2078626 part I</title>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
        <script type="text/javascript">
            $.fn.swap = function(other) {
                $(this).replaceWith($(other).after($(this).clone(true)));
            };
            $(document).ready(function() {
                $('tr').css('cursor', 'pointer').click(function() {
                    $(this).swap($(this).next());
                });
            });
        </script>
    </head>
    <body>
        <table>
            <tbody>
                <tr><td>row1col1</td><td>row1col2</td><td>row1col3</td></tr>
                <tr><td>row2col1</td><td>row2col2</td><td>row2col3</td></tr>
                <tr><td>row3col1</td><td>row3col2</td><td>row3col3</td></tr>
                <tr><td>row4col1</td><td>row4col2</td><td>row4col3</td></tr>
                <tr><td>row5col1</td><td>row5col2</td><td>row5col3</td></tr>
            </tbody>
        </table>
    </body>
</html>

Вот SSCCE, который демонстрирует, как он может быть использован в вашем конкретном случае:

<!doctype html>
<html lang="en">
    <head>
        <title>SO question 2078626 part II</title>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
        <script type="text/javascript">
            $.fn.swap = function(other) {
                $(this).replaceWith($(other).after($(this).clone(true)));
            };
            $(document).ready(function() {
                $('button.swap').click(function() {
                    $('#table tr:eq(1)').swap($('#table tr:eq(3)'));
                });
            });
        </script>
    </head>
    <body>
        <table id="table">
            <tbody>
                <tr><td>row1col1</td><td>row1col2</td><td>row1col3</td></tr>
                <tr><td>row2col1</td><td>row2col2</td><td>row2col3</td></tr>
                <tr><td>row3col1</td><td>row3col2</td><td>row3col3</td></tr>
                <tr><td>row4col1</td><td>row4col2</td><td>row4col3</td></tr>
                <tr><td>row5col1</td><td>row5col2</td><td>row5col3</td></tr>
            </tbody>
        </table>
        <button class="swap">swap rows 2 and 4</button>
    </body>
</html>

Обратите внимание, что индекс элемента основан на нулях, следовательно 1 и 3 в :eq().

7
ответ дан 14 December 2019 в 04:38
поделиться

На основании документации заставляют заставляют ( http://docs.jquery.com/manipult/replacewith#content ) должен делать то, что вы хотите, может быть, селектор, который вы используете нацеливается на что-то другое, чем TR?

$("tr").click(function () {
  $(this).replaceWith("<tr><td>Something New!</td></tr>");
});
0
ответ дан 14 December 2019 в 04:38
поделиться

Следующий код не работает, так как некоторые значения превышают или превышают -1 и 1 (и не должны быть). Может ли кто-то указать, что я делаю неправильно?

Нет, это неверное понимание стандартного отклонения (второго параметра в конструкторе 1 ) нормального распределения.

Нормальное распределение представляет собой знакомую кривую колокола. Эта кривая эффективно сообщает вам распределение значений. Значения, близкие к тому, где пики колокольной кривой, более вероятны, чем значения, находящиеся далеко (хвост распределения).

Стандартное отклонение показывает, как распределяются значения. Чем меньше число, тем более концентрированные значения находятся вокруг среднего значения. Чем больше число, тем менее концентрированные значения находятся вокруг среднего значения. На рисунке ниже видно, что красная кривая имеет дисперсию (дисперсию представляет собой квадрат стандартного отклонения) 0,2. Сравните это с зеленой кривой, которая имеет то же среднее значение, но дисперсию 1,0. Можно видеть, что значения на зеленой кривой более разнесены относительно красной кривой. Фиолетовая кривая имеет дисперсию 5.0, и значения еще больше разбросаны.

Это объясняет, почему значения не ограничиваются [-1, 1] . Однако интересным является тот факт, что 68% значений всегда находятся в пределах одного стандартного отклонения от среднего значения. Таким образом, в качестве интересного теста для себя написать программу, чтобы извлечь большое количество значений из нормального распределения со средним 0 и дисперсией 1 и подсчитать число, которые находятся в пределах одного стандартного отклонения от среднего. Вы должны получить число, близкое к 68% (68.2689492137%, чтобы быть немного точнее).

alt text

1 : Из документации по ускорению :

нормальное распределение _ (RealType mean = 0, RealType sd = 1);

Конструирует нормальное распределение со средним и стандартным отклонением sd.

-121--1531258-

Или вы можете сделать:

$this->db->query('UPDATE vrs_distribution SET received_qty = received_qty + 1, received_date = CURDATE() WHERE id = ' . $id);

Вам нужно изменить предложение WHERE, чтобы удовлетворить вас, хотя

-121--2257080-

Это должно быть сделано:

var sourceRow = $('tr').eq(7);
var targetRow = $('tr').eq(4);

targetRow.after(sourceRow.clone());
sourceRow.replaceWith(targetRow);

На английском языке вставляет копию первой строки после второй строки, затем заменяет первоначальную первую строку на вторую.

Причина, по которой я вставляю клон из первой строки, а не из первой строки, заключается в том, что в этом пути мы не теряем позицию первой строки и можем правильно расположить вторую строку.

Если я правильно помню, использование repleyWith с объектом jQuery приведет к удалению элемента из исходного места и вставке его в новое место, но если это не так, то необходимо также удалить targetRow . Иначе это должно сработать.

1
ответ дан 14 December 2019 в 04:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: