【问题标题】:jquery call a functionjquery调用一个函数
【发布时间】:2012-01-06 15:22:28
【问题描述】:

我需要在这段代码之后执行posImgCar()函数

$('details_img').click(function(i){
    ...
   $(this).closest(".page").find(".car_detail").parent().attr('href', $(this).attr('src'));
   ...
});

所以我有这个:

 $('details_img').click(function(i){
    ...
   $(this).closest(".page").find(".car_detail").parent().attr('href', $(this).attr('src'));
  /*--->*/ posImgCar();
   ...
});

posImgCar();

但当我在同一张图片中单击两次时,它只会调用posImgCar()

我应该如何继续完成它?

【问题讨论】:

  • 你需要解释你想要做什么。代码完全按照应有的方式工作。

标签: javascript jquery function callback


【解决方案1】:

在您的代码示例中,您将单击事件处理程序绑定到 $('details_img'),这意味着您将其绑定到自定义元素,例如,好像您的 HTML 包含 <details_img></details_img>。我假设 details_img 实际上是一个类名或 id。

在您的代码示例中,您还调用了postImgCar() 在将单击事件处理程序附加到 details_img 之后,大概是在页面加载时。如果那不是您的本意,那么当然可以取消那个额外的电话。

如果您希望postImgCar()每次在用户点击 details_img 时执行,并且在设置 href 属性后,如果 details_img 是一个类名,请执行此操作:

$('.details_img').click(function(i){
    // ...
    $(this).closest(".page").find(".car_detail").parent().attr('href', $(this).attr('src'));
    posImgCar();
    // ...
});

或者这个,如果 details_img 是 一个 id

$('#details_img').click(function(i){
    // ...
    $(this).closest(".page").find(".car_detail").parent().attr('href', $(this).attr('src'));
    posImgCar();
    // ...
});

最后,如果您使用的是 jQuery 1.6 或更高版本,请考虑使用.prop() 方法,而不是.attr()。有关说明,请参阅 jQuery API documentation for .prop()

【讨论】:

    【解决方案2】:

    我想你正在寻找 jQuery 的 .one():

    $('.details_img').one('click', function(i){
        ...
       $(this).closest(".page").find(".car_detail").parent().attr('href', $(this).attr('src'));
       ...
       posImgCar();
    });
    

    来自文档:

    此方法与.bind() 相同,只是处理程序在第一次调用后未绑定。

    【讨论】:

    • OP 表示他必须单击图像两次才能调用该函数。我不确定在第一次单击后取消绑定事件处理程序是他想要的。 (当然,我不太确定他想要 什么。)此外,您的代码示例假定“details_img”是一个标签名为“details_img”的元素。
    • @dgvid - 类选择器很好。关于OP想要什么:我认为他想说的是,如果单击两次,它将再次运行-与他的意愿相反。也许我弄错了(这就是我以I think 开头的原因)。 OP 应该学习他/她的英语。
    猜你喜欢
    • 2013-12-17
    • 1970-01-01
    • 2013-06-14
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多