2010-01-05 8 views
6

के बाद तत्व लोड होते हैं I जावास्क्रिप्ट, jQuery या उसके प्लगइन के साथ बहुत अनुभवी नहीं हैं लेकिन आमतौर पर मैं प्रबंधित करता हूं। वैसे भी, मेरा ग्राहक एक साइट का निर्माण कर रहा है और इसके उद्देश्यों में से एक है विभिन्न साइटों से समाचार लेख लेने और अनियंत्रित एचटीएमएल सूचियों में शीर्षक दिखाने के लिए। मेरे पास उसके कोड तक पहुंच नहीं है, समाचार लेख धीरे-धीरे लोड हो जाते हैं (साइट लोड होने के बाद बहुत कुछ)।qTip के साथ समस्या - युक्तियाँ नहीं दिख रही हैं क्योंकि स्क्रिप्ट

मैं क्यूटीआईपी का उपयोग कर रहा हूं और विचार यह है कि एक बार जब आप एक समाचार शीर्षक पर होवर करते हैं, तो यह टूलटिप उत्पन्न करेगा। यह मेरे देव पर्यावरण में ठीक काम करता है, क्योंकि मेरे पास डमी शीर्षक है जो कहीं से भी उत्पन्न नहीं होता है।

समस्या यह है कि क्लाइंट अपने परीक्षण वातावरण में साइट को सेट करने के बाद, सूचियों में समाचार शीर्षक लोड करने वाली स्क्रिप्ट इतनी धीमी होती है कि क्यूटी में कोई तत्व होने से पहले qTIP-script लोड होता है। इसलिए यह किसी भी <li> से टूलटिप्स लेने और उत्पन्न करने के बारे में पता नहीं है।

क्या कोई तरीका यह सुनिश्चित करने का एक तरीका है कि सभी समाचार लेख टूलटिप-स्क्रिप्ट लोड से पहले लोड किए गए हैं? मुझे लगता है कि लिपि लोड करने में एक साधारण देरी बहुत स्मार्ट नहीं है क्योंकि कुछ खिताब दूसरों की तुलना में अधिक समय लगते हैं, इसलिए देरी को काफी लंबा होना होगा।

+0

आपका कोड कहां है? आप qTip कैसे शुरू करते हैं? क्या आप अजाक्स के साथ समाचार खिताब लोड कर रहे हैं? –

+0

मुझे खेद है कि मैंने सोचा कि मैं स्पष्ट था लेकिन मुझे उस कोड तक पहुंच नहीं है जो समाचार खिताब लोड करता है। – msvalkon

उत्तर

1

आपको jQuery फ्रेमवर्क के लाइव ईवेंट का उपयोग करना चाहिए।

Binds a handler to an event (like click) for all current - and future - matched element. Can also bind custom events.

तो उदाहरण के लिए आप की तरह कुछ कर सकता है

$("li").live('mouseover', function(){ 
            $(this).qTip(...); 
            }); 

रेफरी: http://docs.jquery.com/Events/live

+0

+1 यह निश्चित रूप से जाने का तरीका है। यह आपको अपने सभी कार्यक्रमों को फिर से बांधने की आवश्यकता से रोकता है क्योंकि AJAX आपके पृष्ठ पर जोड़ता है। –

+0

बहुत बहुत धन्यवाद, मैं बाइंड() का उपयोग करने के बारे में सोच रहा था, इस बारे में नहीं पता था। – msvalkon

+0

आपका स्वागत है, मैंने हाल ही में इसे अपने बारे में पता चला है। लेकिन यह एक जीवन-बचतकर्ता है –

32

नीचे

पर मेरे अद्यतन देखें मैं इस समस्या के रूप में कार्य कर रहे हैं ठीक है, और @Gaby द्वारा प्रदान किए गए समाधान के साथ आया था। @ गैबी के समाधान के साथ समस्या यह है कि यह माउसओवर घटना होने तक qTip नहीं बनाती है। इसका मतलब है कि आप पहली बार माउसओवर पर qTip नहीं देखेंगे, लेकिन दूसरी बार होगा। साथ ही, जब भी आप माउसओवर करते हैं, तो यह qTip को फिर से बनाएगा, जो बिल्कुल इष्टतम नहीं है।

  • सेट
  • रिटर्न li तत्व को लक्षित करते हैं कि li तत्व पहले से ही एक qtip
  • है:

    $("li").live('mouseover', function() { 
        var target = $(this); 
        if (target.data('qtip')) { return false; } 
        target.qtip(...); 
        target.trigger('mouseover'); 
    }); 
    

    यहाँ यह क्या करता है:

    समाधान मैं के साथ चला गया है

  • यदि ली पर कोई qtip नहीं है, तो इसे
  • माउसओवर ट्रिगर को फिर से भेजता है ताकि qtip acti vated

मुझे पता है कि यह थोड़ा हैकी है, लेकिन ऐसा लगता है। यह भी ध्यान दें कि 2.0 version of qTip should support live() एक विकल्प के रूप में। जहां तक ​​मैं कह सकता हूं, current 2.0 development branch अभी तक इसका समर्थन नहीं करता है।

अद्यतन:

$('selector').live('mouseover', function() { 
    $(this).qtip({ 
     overwrite: false, // Make sure another tooltip can't overwrite this one without it being explicitly destroyed 
     content: 'I\'m a live qTip', // comma was missing here 
     show: { 
     ready: true // Needed to make it show on first mouseover event 
     } 
    }); 
}) 

तो यह पहले सुनिश्चित करें कि आप नए qtips पुन: नहीं है बनाता है:

यहाँ यह करने के लिए उचित तरीके से, qtip डेवलपर खुद मंचों पर से सीधे है "ओवरराइट: झूठी" के साथ हर माउसओवर। फिर यह पहले माउसओवर पर "शो: {तैयार: सत्य}" के साथ क्यूटीप शो बनाता है।

+0

मैंने अभी भी एक बेहतर समाधान शामिल करने के लिए अपना जवाब संपादित कर लिया है। – Tauren

+1

आपको धन्यवाद! इसने एकदम जादू की तरह काम किया! – Loony2nz

+0

यह काम नहीं करता है, qtip अभी भी प्रकट नहीं होता है, कोई त्रुटि नहीं उठाई जाती है, घटना आग लगती है, qtip लोड भी होती है। – KJW

-1

हाँ मैं कुछ इसी तरह के साथ आया था। मुझे लगता है कि किसी ने भी अपने मंचों पर एक ही पोस्ट किया है। मैंने माउसओवर-इवेंट को मूसोमव में बदल दिया ताकि क्यूटीप पहले माउसओवर पर सक्रिय हो।

$('li').live('mousemove', function() { 
    if(!$(this).data('qtip')) { 
    $(this).qtip(...) 

मैं यह भी मानता हूं कि यह एक बहुत ही आसान समाधान है, हालांकि मैं बेहतर तरीके से नहीं आ सकता था। शायद कॉलबैक फ़ंक्शन में qtip को जांचना और लागू करना जो ली को भरता है बेहतर होगा लेकिन मुझे वास्तव में उस कोड तक पहुंच नहीं है।

1

कुछ भी नहीं, लेकिन मैंने अपने onmouseover ईवेंट में show:{ready:true} जोड़ा। यह क्रोम & एफएफ में काम कर रहा है।

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