这在jQuery中转换为对象

时间:2015-05-09 19:58:55

标签: javascript jquery html

我试图编写一个小函数,它从html中获取div元素,隐藏它,分配一个值和一个变量名,然后将其解析到函数中以检查指定的月份(值)是否等于本月。我认为它不起作用的原因是'this'被转换为一个对象Object而它没有存储我解析到它的变量的值。

var currentMonth = (new Date).getMonth() + 1;
var valentinesdiv = $('#valentinesmenu');
$(valentinesdiv).hide();
valentinesdiv = 5;
$.fn.datechecker1 = function () {
    if ($(this) == currentMonth) {
        this.show();
    } else {
        alert(this);
    }
};
$(valentinesdiv).datechecker1();

它直接进入警告框并输出对象,因此当我解析它时,它不会保存变量的值。

3 个答案:

答案 0 :(得分:2)

我看到的一些问题是您尝试在纯JS show()对象上使用jQuery this,并且您在警报框中看到Object object因为{ {1}}实际上是传递对象而不是对象内的某个值。

您最想要的是:

alert(this)

答案 1 :(得分:1)

下面的

var element = $(this), value = element.val(); if(value == currentMonth){ element.show(); } else { alert(value); } 假设实现是在特定js设置变量x5element;然后检查变量是否等于变量#valentinesmenu

currentMonthx设置为5的{​​{1}}; text检查元素是否已被调用,#valentinesmenu等于$.fn.datechecker1; 如果为true,请在text元素上调用currentMonth,如果不是,请将.show()记录到this

不确定这是否是预期的结果或要求; this.text(), currentMonth, x以下的假设基于以上假设

尝试使用console

js
.text()

答案 2 :(得分:0)

问题是你给变量valentinesdiv一个新值。当你这样做时,它会忘记$("valentinesmenu")的引用,当你以后使用它时,你实际上是这样做的:

$(5).datechecker1();

这是一种你可以做你想做的事情(JSFiddle):

var currentMonth = (new Date).getMonth() + 1;

var valentinesdiv = $('#valentinesmenu');
$(valentinesdiv).hide();

$.fn.datechecker1 = function(compare) {
    if(compare == currentMonth){
        $(this).show();
    } else {
        alert(this);
    }
};

valentinesdiv.datechecker1(5);