как содержимое между классами можно поместить в переменную после клика? - PullRequest
2 голосов
/ 22 июля 2011

Как мне извлечь содержимое между включенным и включенным следующим <div class="adding"> и сохранить его в переменной?

<div class="adding">
    <b>
        <div class="column">
            <div class="mediumCell">
                <input type="text" name="name" placeholder="توضیح" title="نام پکیج تور خارجی">
            </div>
        </div>
        <div class="column" style="margin: 5px 3px;">
            <div class="mediumCell">
                <div class="adda">
                    <a href="#" class="add_input"></a>
                </div>
            </div>
        </div>
    </b>
</div>


var adding = '<div class="adding"><b><div class="column"><div class="mediumCell"><input type="text" name="name" placeholder="توضیح" title="نام پکیج تور خارجی"></div></div><div class="column" style="margin: 5px 3px;"><div class="mediumCell"><div class="adda"><a href="#" class="add_input"></a></div></div></div></b></div>'

В каждом желаемом кликечтобы получить контент только один раз.

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

Я пробовал это:

$(function () {        
    var i = $('.adding').size();
    $('.add_input').live('click', function () {
        var scntDiv = '.' + $(this)
                           .closest('.find_input')
                           .find('div')
                           .attr('class');
            var input = $(scntDiv).html();
            $(this).remove();
            $(input).appendTo(scntDiv);
            i++;
            return false;
        });
});

Ответы [ 4 ]

2 голосов
/ 22 июля 2011

Вы можете использовать метод html () , как уже говорили другие, но есть одна загвоздка: этот метод возвращает внутреннее HTML-содержимое элемента, поэтому разметка внешний <div> элемент не будет включен в результат.

Поскольку вы, похоже, хотите эту разметку, вы можете обойти эту проблему с помощью clone () , wrap () и parent () :

var adding = $("div.adding").clone().wrap("<div>").parent().html();
2 голосов
/ 22 июля 2011

Вы можете получить внутренний HTML, используя функцию html:

var adding = $(".adding").html():

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

Однако , обратите внимание, что возвращаемая разметка может отличаться от ожидаемой, поскольку ваш HTML-код недействителен. b элементы не могут содержать div элементы (b элементы могут содержать только содержание фраз ; div элементы являются flow content ), и поэтому браузер корректирует вещи так, как считает нужным, для отображения чего-то разумного. Это плохая вещь (tm) , с динамическими веб-приложениями гораздо лучше убедиться, что ваш HTML верен.

0 голосов
/ 22 июля 2011
var adding = $(".adding").html();

может быть?

0 голосов
/ 22 июля 2011

Это то, что вы просите?

var adding;
$('.adding').click(function(){
    adding = $(this).html();
    alert(adding);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...