के बाहर एक jQuery क्लोन का उपयोग करना मैं एक छोटी परियोजना पर काम कर रहा हूं जहां मैं jQuery .clone()
विधि का उपयोग कर रहा हूं। इसके साथ Pitfall इसका उपयोग HTML पर कर रहा है जिसमें अद्वितीय पहचानकर्ता हैं। तो मैं मूल अद्वितीय तत्वों की शैली गुणों को ढूंढने के लिए getComputedStyle
को लागू करने के लिए चला गया, ताकि इसे क्लोन पर कॉपी किया जा सके और बाद में एक नई आईडी दें (हां, यह प्रदर्शन के मुद्दों को दे सकता है लेकिन यह प्रयोगात्मक है)।डीओएम
jQuery spec के अनुसार, क्लोनिंग के बाद ऐसा करने से पहले, लेकिन संलग्न होने से पहले मैन्युअल रूप से डोम के बाहर हो जाएगा (इसलिए कोई आईडी 'उल्लंघन' नहीं होगा)। लेकिन जब मैंने वस्तु को क्लोन करने के बाद तत्वों की शैली गुणों को खोजने का प्रयास किया, तो मैंने ब्राउज़रों में कुछ अजीब व्यवहार देखा। यह करने से पहले, सभी ब्राउज़रों एक ही मान लेकिन बाद क्लोन किया जा रहा:
फ़ायरफ़ॉक्स - लापरवाह, और दिलचस्प क्लोन की गणना शैली अभिकलन डेटा (पिक्सेल में) वास्तविक सीएसएस मूल्य के बजाय है।
आईई - काम करने लगता है लेकिन मूल्य जरूरी नहीं है।
क्रोम - गणना नहीं करता है।
http://codepen.io/anon/pen/zxqmNK?editors=011
var elements = [];
var objects = [];
$('body').find('[id]').each(function() {
elements.push(this);
});
$('body').clone().find('[id]').each(function() {
objects.push(this);
});
$.each(elements, function(key, element) {
var current = window.getComputedStyle(element, null).getPropertyValue('width');
$('#log').append('<p>' + element.id + ': ' + current + '</p>');
});
$('#log').append('</br>');
$.each(objects, function(count, object) {
var current = window.getComputedStyle(object, null).getPropertyValue('width');
$('#log').append('<p>' + object.id + ': ' + current + '</p>');
});
किसी को पता है अगर यह एक बग है या इसी तरह के व्यवहार से पहले देखा गया है: यहाँ एक उदाहरण है? वेब-वार पर जाने के लिए बहुत कुछ नहीं है (यहां तक कि स्टैक ओवरफ्लो भी नहीं)। किसी भी अंतर्दृष्टि के लिए अग्रिम धन्यवाद।
संपादित करें - कुछ और परीक्षण किया और ऐसा लगता है कि आईई क्रोम के समान व्यवहार करता है। केवल कुछ भी वापस करने की बजाय, सब कुछ 'ऑटो' पर सेट है। यदि क्लोन ऑब्जेक्ट्स की शैली .css()
का उपयोग करके एक्सेस की जाती है, तो सभी मान 0px
(पृष्ठभूमि जैसे गुणों सहित) लौटाते हैं। लगता है कि मोज़िला क्लोन ऑब्जेक्ट का इलाज करता है जैसे कि किसी भी शैली को बिल्कुल लागू किया गया है।
नहीं एक सीधा जवाब है, लेकिन तुम क्यों 'getComputedStyle' इतना साथ काम करना चाहते हैं? क्या सीएसएस शैलियों को अपना रास्ता खोजने के बजाए कक्षाओं का उपयोग करके अपने तत्वों को स्टाइल करने के लिए यह आसान और तरीका अधिक अनुमानित नहीं होगा? – Matijs
मुझे लगता है [यह आपकी मदद कर सकता है] (http://stackoverflow.com/q/18706243/473016) – anpsmn
धन्यवाद, anpsmn। मुझे विश्वास नहीं है कि मुझे वह नहीं मिला। मैंने वास्तव में फ़ेलिक्स क्लिंग के सुझाव देने का फैसला किया था (मूल वस्तुओं से प्रतिलिपि शैली)। यद्यपि मोज़िला को संभालने का तरीका यह बहुत बढ़िया होगा अगर यह क्रॉस ब्राउज़र उपलब्ध था। मतिज, आप निश्चित रूप से सही हैं लेकिन इसे निकाला गया कोड एक छोटी प्लगइन (आवर्धक) के रूप में है, जहां मैं लोगों को अपनी फ़ाइल संरचना को बदलने के लिए मजबूर नहीं करना चाहता हूं। मैं निश्चित रूप से कक्षाओं का उपयोग करने की सिफारिश करेंगे। जवाब के लिए चीयर्स। – Shikkediel