[Jquery] Скрипт дописывает лишнего

Тема в разделе "Другие языки", создана пользователем boool, 3 сен 2011.

Модераторы: Цукер
  1. boool

    boool Создатель

    Регистр.:
    27 авг 2011
    Сообщения:
    24
    Симпатии:
    0
    Не пойму в чем дело.
    Скриптина должна вроде дописывать "руб" и "%", если содержимое html контейнера не пустое, но даже если оно пустое, скрипт все равно дописывает эти "руб" и "%". Вот здесь: allgorod.info/sale

    Самое интересное, что на чистом html скрипт работает как надо. Может какой другой скрипт подключенный мешает?

    вот сам скрипт дописывания:
    Код:
    <script type="text/javascript">
    // для верхнего слайда
    
    $(document).ready(function(){
    var htmlStr1 = jQuery(".thisprise").text();
    var htmlStr2 = jQuery(".aldprice").text();
    var htmlStr3 = jQuery(".sale").text();
    if(htmlStr1 != "" ) {jQuery(".thisprise").append("<small> руб</small>");}
    if(htmlStr2 != "") {jQuery(".aldprice").append("<small> руб</small>");}
    if(htmlStr3 != "") {jQuery(".sale").append("<small> %</small>");}
    
    
    // для блоков
    var htmlStr1 = jQuery(".price_block1").text();
    var htmlStr2 = jQuery(".ald_price").text();
    var htmlStr3 = jQuery(".sale_block1").text();
    if(htmlStr1 != "" ) {jQuery(".price_block1").append("<small> руб</small>");}
    if(htmlStr2 != "") {jQuery(".ald_price").append("<small> руб</small>");}
    if(htmlStr3 != "") {jQuery(".sale_block1").append("<small> %</small>");}
    });
    </script>
    
    
    Блоки в которые дописывается:
    HTML:
    
    <li>
            <img src="images/slider_p.jpg" class=" " alt="gallery-1" title="gallery-1" />
                <div>
                <strong class="thisprise">5600</strong>
                <strong class="aldprice">7000</strong>
                <strong class="sale"></strong>
                <strong class="style2">Офигенный черный мужской пиджак и тонкий галстук</strong>
                <a href="#" class="b_more">Туда ></a> </div>
            </li>
    
    
    и...
    HTML:
    
    <div class="timeblock">
    <div class="price_block1">890</div>
    <div class="ald_price"></div>
    <div class="sale_block1">-50</div>
      <a href="#"><span>Посмотреть</span></a>
      </div>
    
    в чем может быть проблема?
     
  2. horpah

    horpah

    Регистр.:
    21 июн 2010
    Сообщения:
    199
    Симпатии:
    55
    Вообще скрипт работает нормально. Тут может быть ситуация, что движок, формирующий эту HTML-страницу вместо "" ставит, например, "пробел", и т.о. условие выполняется, и добавляются знаки:
    Код:
    if(htmlStr2 != "") {jQuery(".aldprice").append("<small> руб</small>");}
    
    Посмотрите в "просмотре НTML кода страницы", что там действительно в рабочем, а не лабораторном варианте, содержит контейнер.Сам не нашел, потому что ссылка не рабочая.
     
  3. boool

    boool Создатель

    Регистр.:
    27 авг 2011
    Сообщения:
    24
    Симпатии:
    0
    не, двиг лишнего не дописывает.
    решил использованием .each()

    Вот так все заработало:
    Код:
    $(document).ready(function(){
        jQuery(".price_block1, .thisprise, .ald_price, .aldprice").each(function(i, elem){
            elem = $(elem);
            if( elem.text() !== "" ) elem.append("<small> руб</small>");  
        });
        jQuery(".sale_block1, .sale").each(function(i, elem){
            elem = $(elem);
            if( elem.text() !== "" ) elem.append("<small> %</small>");  
        });    
    });