这是问题所在。我有一个像这样的js课:
Code #1
1| function clNumberField(opts) {
2| var numberField = $("<input>", opts);
3| numberField.keydown(function (e) {
4| /*some method to make sure that only digits are input
5| i have it in place and this one works*/
6| }
现在我尝试使用装饰器模式函数,该函数必须向已存储的jQuery元素添加行为。该行为将应用于此字段的伪元素,如下所示:
Code #2
1| function setLabel(inptFld){
2| var v = inptFld;
3| var v_w_lbl = inptFld.addClass(":before");
4| v_w_lbl.css("content","Here goes only numbers");
5| }
然后在$(文件).ready上我做了以下步骤:
Code #3
1| $(document).ready(function () {
1| var num_fld = new clNumberField({id:"some_id",value: "numbers here"});
1| setLabel(num_fld);
1| $("cons").append(num_fld);
1| })
在造型之前它不会附加:可能我错过了在列出的Code#2的第3行中实现正确选择的一些技巧。
现在网上浏览了一段时间(我认为大约一个小时)。您可以提供任何实用的技巧,
答案 0 :(得分:1)
您不会从clNumberField
函数返回该元素,因此您的就绪处理程序中的num_fld
将被定义。
在函数末尾添加return
语句:
function clNumberField(opts) {
var numberField = $("<input>", opts);
numberField.keydown(function (e) {
/*some method to make sure that only digits are input
i have it in place and this one works*/
});
return numberField;
}
然后,您在setLabel
函数中尝试执行的操作是不可能的。您不能在内联样式中使用:before
伪类,您需要在样式表中使用它。例如,将它放在样式表中:
.InputLabel:before { content: 'Here goes only numbers' }
然后将该类添加到元素:
function setLabel(inptFld){
inptFld.addClass("InputLabel");
}