调用javascript函数
问题描述:
我有问题,我的javascript函数isn't当我按下按钮:调用javascript函数
<script type="text/javascript" language="javascript">
(function ($) {
$.fn.addToList = function (opts) {
var input = $(this);
opts.button.click(function() {
opts.list.append("<li>" + input.val() + "</li>");
});
};
}(window.jQuery));
$("#zutat").addToList({
button: $("#btn"),
list: $("#list")
});
</script>
和
<input type="text" id="zutat" name="zutat"></input>
<input type="button" id="btn" value="Click">
<ul id="list"></ul>
如何调用这个javascript函数?我的问题是什么?
答
如果您的script
标记位于#zutat"
之前,那么当DOM元素尚未准备好时,您正在尝试操作#zutat
。在这种情况下,当执行jQuery选择器时,它将不匹配元素,因为它们还没有可用。
要解决这个问题,你应该用$(document).ready
函数包装你的代码,或者把它放在body
标签的底部。
<script type="text/javascript" language="javascript">
(function($) {
$.fn.addToList = function(opts) {
var input = $(this);
opts.button.click(function() {
opts.list.append("<li>" + input.val() + "</li>");
});
};
$(document).ready(function() { // <<<<<<< execute after document ready.
$("#zutat").addToList({
button: $("#btn"),
list: $("#list")
});
});
})(window.jQuery);
</script>
答
如果您想在单击按钮时将<li>
s添加到<ul>
,您将围绕某种方式进行讨论。你不需要扩展jQuery或对象原型来做到这一点。
尝试以下
$("#button").click(function() {
var val = $("zutat").val();
$("#list").append($("<li>" + val + "</li>"));
});
答
我想你应该这样
})(window.jQuery);
在Firefox(我用萤火虫来测试这一点),如果你这样做
function(){ alert("GONG"); }();
移动括号
它给你一个错误,但如果你用圆括号包装功能
(function(){ alert("GONG"); })();
将执行匿名函数。
你也应该在qiao的回答中显示的012调用$(document).ready();
调用中的dom元素。
+0
+1,没有注意到这一个,修正了我的代码:) – qiao
你试过调试吗? – TJHeuvel
你能提供一个jsfiddle.net/mKtn2/3/ – xdazz