我有问题,当我按下按钮时,我的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函数?我的问题是什么?
答案 0 :(得分:5)
如果您的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>
答案 1 :(得分:2)
我认为你应该这样移动括号
})(window.jQuery);
在Firefox中(我使用Firebug进行测试)如果你这样做
function(){ alert("GONG"); }();
如果你用括号
包装函数,它会给你一个错误(function(){ alert("GONG"); })();
将执行匿名函数。
你还应该在$(document).ready();
调用中将调用包装到dom元素中,如qiao的回答所示。
答案 2 :(得分:0)
如果您想在点击按钮时将<li>
添加到<ul>
,那么您将以非常全面的方式进行讨论。你不需要扩展jquery或对象原型来做到这一点。
尝试以下
$("#button").click(function() {
var val = $("zutat").val();
$("#list").append($("<li>" + val + "</li>"));
});
答案 3 :(得分:-1)
通常,click事件的处理方式如下
$('#btn').on("click",function(){
// code
});
我不知道你的代码到底做了什么,但不知道你想要的是什么。