2010-01-11 9 views
11
function SlideObject(Side) { 
    $("#div").animate({ 
     margin+Side: "-1000px", 
     opacity: "hide" 
    }, 1000); 
} 

मैं एनिमेट फ़ंक्शन के लिए संपत्ति पहचानकर्ता (मार्जिन) के नाम पर "साइड" के मान को पास करना चाहता हूं।परिवर्तक को jquery एनिमेट फ़ंक्शन गुणों में कैसे पास किया जाए?

मुझे पता है कि "मार्जिन + साइड" मान्य नहीं है, यह केवल एक जगह धारक के रूप में है। उदाहरण के लिए यदि मैं संपत्ति नाम मैन्युअल रूप से निर्दिष्ट करना था तो यह एक उदाहरण नाम देने के लिए "मार्जिन लाइफ" हो सकता है। मैं SlideObject फ़ंक्शन के पैरामीटर के रूप में "बाएं", "दाएं", "शीर्ष" या "नीचे" की आपूर्ति करना चाहता हूं।

मुझे यह करने में परेशानी हो रही है और एक उदाहरण अद्भुत होगा।

धन्यवाद

उत्तर

22

सबसे पहले, यह करने के लिए नहीं उपयोग eval() है। इसकी आवश्यकता नहीं है और इससे आपकी साइट कमजोरियों तक खुलती है यदि आप किसी भी तरह से उपयोगकर्ता इनपुट का उपयोग कर रहे हैं (प्रत्यक्ष या परोक्ष रूप से)। यह करने के लिए सही तरीका है:

और जावास्क्रिप्ट:

function slideObject(side) { 
    var anim = {opacity: 0}; 
    anim["margin" + side] = "-1000px"; 
    $("#div").animate(anim, 1000); 
} 

$(function() { 
    slideObject("Left"); 
}); 

आप ध्यान दें हूँ कि opacity मूल्य बदल गया है 0 पर hide है

<div id="div">This is a test</div> 
सीएसएस के साथ

opacity के लिए वैध मान नहीं है।

मूल रूप से आप अज्ञात ऑब्जेक्ट बनाते हैं और फिर [] का उपयोग करके एक गतिशील प्रॉपर्टी असाइन करते हैं।

+1

किसी कारण से यह काम नहीं करता है ... – fuzzywuzzy

+0

मेरा इरादा विवादास्पद नहीं होना चाहिए, लेकिन यह एक भेद्यता कैसे हो सकती है? मेरा मतलब है, यह ** मेरा ** ब्राउज़र में चलता है। – metrobalderas

+1

क्रॉस-साइट स्क्रिप्टिंग (एक्सएसएस), जिसका अर्थ है कि कोई जेएस इंजेक्ट करने में सक्षम हो सकता है ताकि वह आपकी साइट पर चलता है और उसके बाद सामानों तक पहुंच हो जाती है अन्यथा नहीं। – cletus

संबंधित मुद्दे