为什么不使用事件绑定和传播来监控变量值,如果达到你想要的值,然后触发另一个事件?下面是使用演示“对象”的基本思想,但您可以将其应用于您的“positionNow”或任何其他类型的变量,用于可能已经具有可访问属性的任何对象(包括“窗口”对象)。
例如:jsfiddle - http://jsfiddle.net/vepWE/1/
JS:
$("#b").data('myscrollposition', 100);
$("#c").data('myscrollposition', 101);
$("#d").data('myscrollposition', 100);
function f(evt)
{
$(this).val("desired event triggered");
}
function change(evt)
{
var m = $(this).data('myscrollposition');
//equivalent to above: var m = $(evt.currentTarget).data('myscrollposition');
if(m == 100)
{
$(this).trigger('valuereached');
}
}
$(".des").on('change', change);
$(".des").on('valuereached', f);
$(".des").trigger('change');
HTML:
<input class = "des" id = "b"></input>
<input class = "des" id = "c"></input>
<input class = "des" id = "d"></input>
注意:还请记住,如果页面上尚不存在您的元素,则必须使用以下语法:
$(".parentcontainer").on("myevent", '.listenforthisalways', function(event){
alert($(this).text());
});
即使您稍后在页面中添加具有“listenforthisalways”类的元素(在上面的示例中,仅当它被添加为具有类“parentcontainer”的容器的后代)而不是已经具有页面上的元素。
另一个示例在页面上侦听任何添加的带有“myFOO”类的 html 元素,并将事件“myevent”绑定到该元素的函数“myfunction”,即使稍后将其添加到您的页面,如下所示:
function myfunction(evt)
{
//whatever
}
$(document).on("myevent", '.myFOO', myfunction);
希望这可以帮助!