jQuery минимальная ширина против ширины: как удалить px? - PullRequest
8 голосов
/ 02 августа 2011

Попробуем немного базовых jQuery и JavaScript здесь.

.width() дает мне целочисленное значение..css('min-width') дает мне значение, заканчивающееся на px.Поэтому я не могу сделать математику на этом, как есть.Что такое рекомендуемое решение?

alert($('#<%=lstProcessName.ClientID%>').parent('.column4').width());
alert($('#<%=lstProcessName.ClientID%>').parent('.column4').css('min-width'));
alert($('#<%=lstProcessName.ClientID%>').parent('.column4').width() >= $('#<%=lstProcessName.ClientID%>').parent('.column4').css('min-width'));

if ($('#<%=lstProcessName.ClientID%>').parent('.column4').width() >= $('#<%=lstProcessName.ClientID%>').parent('.column4').css('min-width')) {
  ...
}

Ответы [ 6 ]

21 голосов
/ 02 августа 2011

Использование replace():

alert($('#<%=lstProcessName.ClientID%>').parent('.column4').css('min-width').replace('px', ''));

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

alert(parseInt('1px')); //Result: 1
9 голосов
/ 03 августа 2011

Лучше всего использовать parseInt. Функции jQuery .width() и .height() работают именно так.

Кроме того, было бы хорошо инкапсулировать выборку этих значений в автономных функциях:

  • .minHeight(), .minHeight( size ), .minHeight( function() )
  • .maxHeight(), ...
  • .minWidth(), ...
  • .maxWidth(), ...

Вот так:

(function($, undefined) {

    var oldPlugins = {};

    $.each([ "min", "max" ], function(_, name) {

        $.each([ "Width", "Height" ], function(_, dimension) {

            var type = name + dimension,
                cssProperty = [name, dimension.toLowerCase()].join('-');

            oldPlugins[ type ] = $.fn[ type ];

            $.fn[ type ] = function(size) {
                var elem = this[0];
                if (!elem) {
                    return !size ? null : this;
                }

                if ($.isFunction(size)) {
                    return this.each(function(i) {
                        var $self = $(this);
                        $self[ type ](size.call(this, i, $self[ type ]()));
                    });
                }

                if (size === undefined) {
                    var orig = $.css(elem, cssProperty),
                        ret = parseFloat(orig);

                    return jQuery.isNaN(ret) ? orig : ret;
                } else {
                    return this.css(cssProperty, typeof size === "string" ? size : size + "px");
                }
            };

        });

    });

})(jQuery);

И ваш код превратится в:

alert($('#<%=lstProcessName.ClientID%>').parent('.column4').width());
alert($('#<%=lstProcessName.ClientID%>').parent('.column4').minWidth());
alert($('#<%=lstProcessName.ClientID%>').parent('.column4').width() >= $('#<%=lstProcessName.ClientID%>').parent('.column4').minWidth());
if ($('#<%=lstProcessName.ClientID%>').parent('.column4').width() >= $('#<%=lstProcessName.ClientID%>').parent('.column4').minWidth()) {
2 голосов
/ 02 августа 2011

Если вы сначала передадите возвращаемое значение от .css('min-width') до parseInt, он уберет для вас «px».

parseInt(
    $('#<%=lstProcessName.ClientID%>').parent('.column4').css('min-width'), 
    10
);

(Не забудьте второй параметр в parseInt.)

2 голосов
/ 02 августа 2011

Некоторые манипуляции со строками, чтобы удалить 'px', а затем использовать parseInt, чтобы получить его как число:

var minWidth = parseInt($('#<%=lstProcessName.ClientID%>').parent('.column4').css('min-width').replace('px', ''), 10)
0 голосов
/ 02 августа 2011

Используйте подстроку для значения, возвращаемого из минимальной ширины, чтобы удалить px

0 голосов
/ 02 августа 2011
alert($('#<%=lstProcessName.ClientID%>').parent('.column4').css('min-width').substring(0,indexOf('px'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...