2010-05-11 14 views
18

Tamam, yani jQuery jQuery komut üstündeki bu ekleyerek, tek komut ile mooTools birlikte almalıyız:jQuery ve mooTools Çatışma

var $j = jQuery.noConflict(); 

ve sonra her yerine:

$(

$j(

Ama nasıl alacağı mooTools ile

jQuery kullanarak o aşağıdaki komut dosyasını sevmeye ?? herhangi bir giriş için şimdiden

sayesinde

Tracy

//Fade In Content Viewer: By JavaScript Kit: http://www.javascriptkit.com 

var fadecontentviewer={ 
csszindex: 100, 
fade:function($allcontents, togglerid, selected, speed){ 
    var selected=parseInt(selected) 
    var $togglerdiv=$("#"+togglerid) 
    var $target=$allcontents.eq(selected) 
    if ($target.length==0){ //if no content exists at this index position (ie: stemming from redundant pagination link) 
    alert("No content exists at page number "+selected+"!") 
    return 
    } 
    if ($togglerdiv.attr('lastselected')==null || parseInt($togglerdiv.attr('lastselected'))!=selected){ 
    var $toc=$("#"+togglerid+" .toc") 
    var $selectedlink=$toc.eq(selected) 
    $("#"+togglerid+" .next").attr('nextpage', (selected<$allcontents.length-1)? selected+1+'pg' : 0+'pg') 
    $("#"+togglerid+" .prev").attr('previouspage', (selected==0)? $allcontents.length-1+'pg' : selected-1+'pg') 
    $target.css({zIndex: this.csszindex++, visibility: 'visible'}) 
    $target.hide() 
    $target.fadeIn(speed) 
    $toc.removeClass('selected') 
    $selectedlink.addClass('selected') 
    $togglerdiv.attr('lastselected', selected+'pg') 
    } 
}, 

setuptoggler:function($allcontents, togglerid, speed){ 
    var $toc=$("#"+togglerid+" .toc") 
    $toc.each(function(index){ 
    $(this).attr('pagenumber', index+'pg') 
    }) 

    var $next=$("#"+togglerid+" .next") 
    var $prev=$("#"+togglerid+" .prev") 
    $next.click(function(){ 
    fadecontentviewer.fade($allcontents, togglerid, $(this).attr('nextpage'), speed) 
    return false 
    }) 
    $prev.click(function(){ 
    fadecontentviewer.fade($allcontents, togglerid, $(this).attr('previouspage'), speed) 
    return false 
    }) 
    $toc.click(function(){ 
    fadecontentviewer.fade($allcontents, togglerid, $(this).attr('pagenumber'), speed) 
    return false 
    }) 
}, 

init:function(fadeid, contentclass, togglerid, selected, speed){ 
    $(document).ready(function(){ 
    var faderheight=$("#"+fadeid).height() 
    var $fadecontents=$("#"+fadeid+" ."+contentclass) 
    $fadecontents.css({top: 0, left: 0, height: faderheight, visibility: 'hidden'}) 
    fadecontentviewer.setuptoggler($fadecontents, togglerid, speed) 
    setTimeout(function(){fadecontentviewer.fade($fadecontents, togglerid, selected, speed)}, 100) 
    $(window).bind('unload', function(){ //clean up 
    $("#"+togglerid+" .toc").unbind('click') 
    $("#"+togglerid+" .next", "#"+togglerid+" .prev").unbind('click') 
    }) 
    }) 
} 
} 
+1

Daha önce yaptığınız gibi ... $ ('ile) $ yerine ($. –

+0

Bu işe yaramaz, çünkü tüm $ $ gibi ayarlanmış değildir (böylece sadece bir" j "ekleyebilirsiniz) "ikisi arasında. Bazı $ toc $ hedef $ selectedlink.ect ... Dolar işareti/açılış parantez yerine, dolar işareti/adı var. Eğer orada bir" j "yapıştırırsam, gerçekten şeyleri vidalar. – flipflopmedia

+0

Ben bir aptal gibi hissediyorum! Yaptım, diğer $ 'isimleri' tek başına bırakarak, ve işe yaradı! Ben bir SOB olacak!! Bununla birlikte, bu Dimitar Christoff'un cevabı olmadan işe yaramazdı, çünkü ne olursa olsun, o geçersizdi 1 MooTools betiği ile çalışmak için 2 jQuery komut dosyalarını elde etmenin tek yolu, 3 betiğin tümünü yeniden atamaktı! – flipflopmedia

cevap

5

Ben mooTools tarafından sağlanan bir uyumluluk modunda bilmem ama kolay bir yol içinde $( tüm tekrarlarını değiştirmek olmalıdır $j( veya jQuery( tarafından komut dosyası. Eğer $ kullandığı jQuery özel kodu varsa

+0

Kolay ve kirli. –

26

, basit yolu aşağıdaki kod sarılmasıdır:

// Disable the $ global alias completely 
jQuery.noConflict(); 

// For jQuery scripts 
(function($){ 

// set a local $ variable only available in this block as an alias to jQuery 
... here is your jQuery specific code ... 

})(jQuery); 

// For Mootols scripts 
(function($){ 

// set a local $ variable only available in this block as an alias 
// to Mootools document.id 
... here is your Mootools specific code ... 

})(document.id); 

noConflict documentation ikinci örneğe bakın.

+1

aynı şey tersine doğrudur, yani mootooller zaten tanımlanmışsa $ 'ı devretmez, ancak document.id' e geri döner (v1.2.1'den beri). Daha sonra aynı kapanışı uygulayabilirsiniz ancak jQuery yerine 'document.id 'değerini –

+1

Dimitar parametresi olarak kullanabilirsiniz. Çalışmalarım yapmak için 3 betiğin hepsini değiştirmek zorunda kaldım (sadece 1 komut dosyası değişmedi). JQuery komut dosyalarına var j = jQuery.noConflict() öğesini ekleyerek ve var $ = document.id ekleyerek; MooTools komut dosyasına & şimdi hepsi birlikte mutlu bir şekilde çalışıyorlar. Bu, asla yorumunuzla çalışmadı ve v1.2.1 önerisi olurdu. Teşekkürler! Vincent, her ne sebeple olursa olsun, yukarıda yazdığım komut dosyası üzerinde çalışmadı. Diğer 1 üzerinde çalışmıştım var. Var $ j = jQuery.noConflict(); Ama yukarıda 1 değil. Ama işe yaradığı zamanki kısa ipucunu bilmek beni çok mutlu etti. – flipflopmedia

+0

Mootools geliştiricileri için biraz açıklığa kavuşmak için cevabımdaki Dimitar çözümünü ekledim –

1

$'u $jQuery ile değiştirin ve çalışması gerekir.

İlgili konular