2011-03-16 90 views
0

使用jQuery的插件體系結構,我在我的js文件中添加了一行代碼,它將簡單的「div」元素附加到文本框中。這個任務似乎很簡單,但我無法弄清楚我要去哪裏錯了。jquery:將文本加載到文檔加載

從我的HTML文件中的代碼片段

<div style="margin-top:50px"> 
    Search: <input id="searchbox" type="text" /><br /> 
</div> 
... 
<script type="text/javascript"> 
$(document).ready(function() { 
    $('#searchbox').testplugin(); 
}) 
</script> 


這是從testplugin.js文件

init : function(options) 
{ 
    // some initialization 

    // iterate through all the jquery objects 
    return this.each(function() { 
     $(this).append('<div>Sample Text</div>'); 
    }); 
} 

在這一點上,我敢肯定,$(這)是指正確的對象(我已經嘗試提醒該ID)。另外,當我嘗試在Firefox中執行「查看源代碼」時,我還會看到新添加的div(但不在實際的GUI中)。但是,在Internet Explorer中,出現「意外調用方法或訪問權限」錯誤。

我在這裏做錯了什麼?或者我該怎麼做才能做到這一點?

謝謝! Erwin

回答

0

修改我的代碼(),而不是追加()

init : function(options) 
{ 
    // some initialization 

    // iterate through all the jquery objects 
    return this.each(function() { 
     $(this).after('<div>Sample Text</div>'); 
    }); 
} 
2

Erwin,我很確定每個規範 - 你不能把一個div元素放入一個input元素。這可能是您的IE錯誤&的原因,因爲您的瀏覽器在加載時沒有看到任何內容。

試試.val('test');而不是追加()&你可能會遇到工作代碼,與.addClass('yourcssclass')相同;或任何其他「合法」的DOM操作。

+1

後使用「我相當肯定的是按規格 - 你不能把一個div元素中的輸入元素的」 LOL真棒。 – mattsven

+0

我一定誤解了append()函數。我認爲這會在目標元素旁增加一個兄弟姐妹。 – Erwin

+0

我想我正在尋找的是after()方法。感謝您的領導! – Erwin

1
init : function(options) 
{ 
// some initialization 

// iterate through all the jquery objects 
return this.each(function() { 
    $(this).val('Sample Text'); 
}); 
} 

這個代碼將會幫助,如果你正試圖使文本框「示例文字」 你的插件仍然會在elemets如diva等工作中的文本......

+0

感謝幫助的人。我實際上找到了解決方案。我假設append()創建了一個兄弟姐妹是錯誤的。正如我上面提到的,我將append()更改爲after(),現在可以。 – Erwin