2011-11-24 17 views
0

我對jQuery插件非常不熟悉,只有jQuery本身的經驗。jQuery基本插件 - 從另一頁載入

我正在嘗試創建一個jQuery插件,允許我使用URL中的GET變量填充div與來自另一個頁面的內容,具體取決於傳遞給它的參數。

例如,$('#mydiv').getstuff(1,2,3)會從之上加載engine.php?a=1&b=2&c=3的代碼。

這是我的代碼到目前爲止 - 我知道有問題的方式需要參數,但除此之外,我不明白爲什麼它不工作。

<script type="text/javasctipt" src="http://code.jquery.com/jquery-latest.min.js"></script> 
<script type="text/javascript"> 
    (function($){ 
     $.fn.extend({ 
      //pass the options variable to the function 
      bookmark: function(options) { 
       var defaults = { 
        number: 5, 
        order: 1, 
        user: '', 
       }; 

       var options = $.extend(defaults, options); 

       return this.each(function() { 
        var o = options; 
        var obj = $(this); 
        var container = $("div", obj); 

        $("div", obj).load("thing.php?number="+o.number+"&order="+o.order+"&user="+o.user); 
       }); 
      } 
     }); 
    })(jQuery); 

    $(document).ready(function() { 
     $('#thing').bookmark(1,2,3); 
    }); 
</script> 

<div id="thing"></div> 

回答

1

我看到的問題是,這些行:

var obj = $(this); 
$("div", obj).load("thing.php?number="+o.number+"&order="+o.order+"&user="+o.user); 

最後一行說:「你找的obj中的所有div標籤,」這是說,在當前的jQuery框架內所有div標籤,這是DIV#東西。只需將其更改爲:

$(this).load("thing.php?number="+o.number+"&order="+o.order+"&user="+o.user); 
0

這似乎是正確的。

看看syntax here

$("div", obj)?什麼是obj?另外,這可能只是一個例子,但您需要#div。另外,請記住#div必須存在,否則該調用甚至不會執行。

此外,看看javascript錯誤控制檯,也許這給你任何提示,爲什麼它不工作?也許有任何錯誤?

0

這條線 -

$("div", obj).load("thing.php?number="+o.number+"&order="+o.order+"&user="+o.user); 

是相當於 -

$(obj).find("div").load("thing.php?number="+o.number+"&order="+o.order+"&user="+o.user); 

所以您要搜索的內部obj一個div它,在你的例子是什麼裏面一個div。這樣代碼將不會返回任何元素,並且您的load函數將不起作用。您可以將load直接寫入$(obj),或者編寫一些代碼來檢查您的插件已被調用的元素,然後再決定在哪裏注入load內容。