将css添加到已存储在变量中的jQuery对象的伪元素中

时间:2014-10-03 10:38:16

标签: javascript jquery css

这是问题所在。我有一个像这样的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行中实现正确选择的一些技巧。

现在网上浏览了一段时间(我认为大约一个小时)。您可以提供任何实用的技巧,

1 个答案:

答案 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");
}