Dưới đây là một plugin rất đơn giản (có thể là trong nhiều cần phải cải thiện) Tôi đã ném với nhau rằng sẽ giúp bạn có được giá trị của một kiểu inline tài sản (và trở undefined
nếu tài sản đó không được tìm thấy):
(function ($) {
$.fn.inlineStyle = function (prop) {
var styles = this.attr("style"),
value;
styles && styles.split(";").forEach(function (e) {
var style = e.split(":");
if ($.trim(style[0]) === prop) {
value = style[1];
}
});
return value;
};
}(jQuery));
Bạn có thể gọi nó như thế này:
//Returns value of "width" property or `undefined`
var width = $("#someElem").inlineStyle("width");
Đây là working example.
Lưu ý rằng nó sẽ chỉ trả về giá trị cho thành phần đầu tiên trong tập hợp phù hợp.
Kể từ khi nó trả undefined
khi đó toạ lạc không tìm thấy, bạn có thể sử dụng nó trong tình huống của bạn như thế này:
if (base.$element.inlineStyle("width")) {
// It has a `width` property!
}
Cập nhật
Dưới đây là một nhiều, phiên bản ngắn hơn nhiều . Tôi nhận ra rằng prop("style")
trả về một đối tượng, không phải là một chuỗi và các thuộc tính của đối tượng đó tương ứng với các thuộc tính kiểu có sẵn. Vì vậy, bạn chỉ có thể làm điều này:
(function ($) {
$.fn.inlineStyle = function (prop) {
return this.prop("style")[$.camelCase(prop)];
};
}(jQuery));
Bạn có thể muốn thay thế việc sử dụng các $.camelCase
với một chức năng tùy chỉnh camelcase, kể từ khi một trong jQuery dường như được cung cấp tài liệu và có lẽ là không tốt để dựa vào. Tôi chỉ sử dụng nó ở đây vì nó ngắn hơn.
Đây là số working example của tài khoản đó. Lưu ý rằng trong trường hợp này, giá trị trả về sẽ là chuỗi trống nếu kiểu không được tìm thấy trên phần tử. Điều đó sẽ vẫn được đánh giá là false
, vì vậy câu lệnh trên if
sẽ vẫn hoạt động.
Nguồn
2012-07-03 08:10:28
Tuyệt vời .. đầu tiên tôi mặc dù một số giải pháp dựa trên reg-ex .. nếu công việc này sau đó tuyệt vời của nó !! – coolguy
Cảm ơn James, đã làm việc rất tốt. –
@MatthewGrima - Bạn được chào đón, vui vì tôi có thể giúp :) –