Нужна помощь, чтобы выяснить, почему текущий код не работает с текущей последней (1.6.4) версией JQuery - PullRequest
0 голосов
/ 28 сентября 2011

Ниже приведен код, программа разбита на два основных сегмента. Один, который выполняет операцию над каждым элементом Select, а другой на всех элементах опций в пределах этого \ каждого выбора и этот не работает, так как следует добавить цену "[+ $ 00]" к каждому текстовому значению опции выбора, бар текущего выбранного. Часть кода, которая не работает, помечена. Работал нормально с 1.5.1, 1.5.2 и не работает со всеми начиная с 1.6

        // ===== CODE DOES NOT WORK FROM HERE WITH 1.6.4============
        $(this).find('option').each(function () {

            //$(this).append('<span></span>');

            var uov = parseInt($(this).attr('value')) || 0; //Unselected option value

            var uop; //Unselected Option Price


            for (d = 0; d <= data.length; d++) {


                if (data[d].partid == uov) {

                    uop = data[d].price;
                    break;
                }

            }

            //debugger;
            var pricediff = Math.abs(uop - sop);

            var xtext = $(this).text();





            if (xtext.match(/\✔/) != null) {

                var temp = xtext.replace(/✔/g, '');


                xtext = temp;
            }


            if (xtext.match(/\[.*\]/) != null) {
                var temp = xtext.split('[')[0];
                var temp2 = xtext.split(']')[1];

                xtext = temp2;
            }

            if (uov != 0) {

                if (pricediff != 0) {


                    var diff = '[' + (sop > uop ? '-' : '+') + '$' + pricediff + ']';


                    $(this).attr("text", diff + " " + xtext);
                }

                else {

                    $(this).attr("text", "  ✔  " + " " + xtext);


                }

            }

                  //=============== TO HERE ========================

1 Ответ

0 голосов
/ 28 сентября 2011

Не использовать:

$(this).attr('value')

, чтобы получить значение поля формы. Использование:

$(this).val()

Это вызвало много головных болей у наших клиентов-разработчиков, когда мы изменили версию jQuery нашего фреймворка.

--- Редактировать ---

Вы, безусловно, не должны пытаться редактировать текст элемента с помощью функции attr (), как здесь:

 $(this).attr("text", diff + " " + xtext);

Вы должны использовать:

 $(this).text(diff + " " + xtext);
...