标签: jquery-callback

设置JQuery event.preventDefault()时,在window.open上绕过弹出窗口阻止程序

我想在超链接的单击事件上有条件地显示JQuery对话框.

我有条件,例如在条件1上打开一个JQuery对话框,如果不满足条件1,则导航到由'href'标签引用的页面,该标签的点击事件有问题.

我能够在链接的点击事件上调用一个函数.此函数现在通过执行另一个URL(执行我的Spring控制器并返回响应)来检查所述条件.

所有的作品都只有window.open被弹出窗口拦截器阻挡.

$('a[href*=/viewpage?number]').live('click', function(e) {
    e.preventDefault();
    redirectionURL = this.href;
    pageId= getUrlVars(redirectionURL)["number"];
    $.getJSON("redirect/" + pageId, {}, function(status) {
        if (status == null) {
            alert("Error in verifying the status.");
        } else if(!status) {
            $("#agreement").dialog("open");
        } else {
            window.open(redirectionURL);
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

如果我e.preventDefault();从代码中删除,popoup阻止程序不会阻止页面,但是对于condition1,它会打开对话框并打开'href'页面.

如果我解决了一个,它会为另一个人带来问题.我无法同时兼顾两种情况.

你能帮我解决这个问题吗?

一旦这个问题得到解决,我还有另外一个问题需要解决,即导航对话的OK事件:)

jquery window.open popup-blocker jquery-callback

96
推荐指数
5
解决办法
17万
查看次数

我什么时候会使用JQuery.Callbacks?

我正在查看添加到jQuery 1.7的新内容,我看到他们现在有jQuery.Callbacks()http://api.jquery.com/jQuery.Callbacks/.

该文档向您展示了如何使用jQuery.callbacks(),但没有任何适用于我何时想要使用它们的示例.

看起来你可以在回调列表中添加/删除回调,你可以执行jQuery.callbacks().fire(args),但这只会触发该列表中的所有回调.也许我错过了一些东西,但这似乎没有用.

在我第一次看到这个新功能时,我认为你可以将它与键/值对一起使用.然后,这将提供一种在应用程序的单个位置管理回调函数的简单方法.就像是

$.callbacks.add("foo", myFunction);
Run Code Online (Sandbox Code Playgroud)

然后例如,如果我想在函数结束时调用该回调,我可以做类似的事情

$.callbacks().fire("foo", args);
Run Code Online (Sandbox Code Playgroud)

但是,它看起来不像你可以触发特定的回调,你只能使用给定的参数或它们都不会触发所有这些回调.

我看到的最接近的事情就是能够给.fire()函数一个上下文来设置"this"属性

.fireWith(context, args)
Run Code Online (Sandbox Code Playgroud)

但这也没有多大帮助.

  1. 我误解了文档吗?

  2. 如果这是所需的功能,那么有用的示例是什么.

jquery jquery-callback jquery-1.7

41
推荐指数
3
解决办法
2万
查看次数

jQuery $ .animate()多个元素,但只触发一次回调

如果您选择要使用jQuery进行动画处理的类或元素集合:

$('.myElems').animate({....});
Run Code Online (Sandbox Code Playgroud)

然后还使用回调函数,最终会有很多不必要的animate()调用.

var i=1;
$('.myElems').animate({width:'200px'}, 200, function(){
    //do something else
    $('#someOtherElem').animate({opacity:'1'}, 300, function(){        
        if (i>1) console.log('the '+i+'-th waste of resources just finished wasting your resources');
        i++;
    });
});
Run Code Online (Sandbox Code Playgroud)

可以说这只是糟糕的代码和/或设计 - 但是我能做些什么,既避免了许多animate()调用,只有其中一个使用回调,并且需要执行大量不必要的回调并且使用我的代码/预期行为?

理想情况下,我只能编写一个只能运行一次的"一次性"回调 - 否则可能有一种有效的方法来测试某些东西是否已经被jQuery动画了?

示例:http://jsfiddle.net/uzSE6/(警告 - 这将显示大量警报框).

jquery jquery-callback jquery-animate

40
推荐指数
1
解决办法
1万
查看次数

jQuery如何?将附加参数传递给$ .ajax调用的成功回调?

我似乎是徒劳无功地将其他参数传递回我为成功的ajax调用创建的成功回调方法.一点背景.我有一个页面,其中包含许多动态创建的文本框/选择框对.每对具有动态分配的唯一名称,例如name ="unique-pair-1_txt-url"和name ="unique-pair-1_selectBox",则第二对具有相同但前缀不同.

为了重用代码,我制作了回调来获取数据和对selectbox的引用.但是当回调被触发时,对selectbox的引用将返回为"undefined".我在这里读到它应该是可行的.我甚至尝试过利用'上下文'选项,但仍然没有.这是我尝试使用的脚本块:

<script type="text/javascript" language="javascript">
$j = jQuery.noConflict();
function getImages(urlValue, selectBox) {
    $j.ajax({
        type: "GET",
        url: $j(urlValue).val(),
        dataType: "jsonp",
        context: selectBox,
        success:function(data){
         loadImagesInSelect(data)
        } ,
        error:function (xhr, ajaxOptions, thrownError) {
            alert(xhr.status);
            alert(thrownError);
        }

    });
}

function loadImagesInSelect(data) {
var select = $j(this);
select.empty();
$j(data).each(function() {
    var theValue = $j(this)[0]["@value"];
    var theId = $j(this)[0]["@name"];
    select.append("<option value='" + theId + "'>" + theValue + "</option>");
});
select.children(":first").attr("selected", true);

}    
</script>
Run Code Online (Sandbox Code Playgroud)

从我所读到的,我觉得我很接近,但我不能把手指放在缺失的环节上.请帮助你典型的忍者隐身方式.TIA

****更新****尼克是一个真正的忍者.他们应该为此发明一个新的徽章!他下面的回答就是诀窍.正如他提到的那样具体是1.4,但我可以忍受.这是我的最终代码,适用于任何Ninjas的培训(以及我未来的参考):

<script type="text/javascript" language="javascript">
$j = jQuery.noConflict(); …
Run Code Online (Sandbox Code Playgroud)

jquery jquery-callback

18
推荐指数
3
解决办法
5万
查看次数

将回调添加到jQuery DatePicker的正确方法

DatePicker有一个内部函数,_adjustDate()我想在之后添加一个回调函数.

现行方法


这就是我目前正在做的事情.基本上,只需用自身替换功能定义,再加上新操作.这会影响所有日期选择器,我也不确定是否需要.

$(function(){

   var old = $.datepicker._adjustdate;

   $.datepicker._adjustDate = function(){
      old.apply(this, arguments);

      // custom callback here     
      console.log('callback');
   };

});
Run Code Online (Sandbox Code Playgroud)

_adjustDate是在下一个/上个月点击期间调用的内容.该函数有三个参数.我很好奇是否有更好的方法来添加回调.


预期结果


我希望最终结果看起来像这样; afterAjustDate回调句柄在哪里:

$('#datepicker').datepicker({ 
       showButtonPanel: true
     , afterAdjustDate: function(){ $(this).find('foo').addClass('bar'); }
});
Run Code Online (Sandbox Code Playgroud)


FYI


onChangeMonthYear不是可接受的事件替代,也不是live()/ delegate()(不在IE中工作)绑定选项.

这来自于在选择月份后应用类/操作元素的需要.更改月份会重新创建日历中的元素; 执行此操作时,jQueryUI不够智能,无法继承类更改.因此,我需要在更改日期后进行回调.

javascript jquery jquery-ui jquery-callback jquery-ui-datepicker

17
推荐指数
2
解决办法
3万
查看次数

如何在没有堆叠回调的情况下在jQuery中制作动画?

假设我有三个div,并且我希望每个div都完成前一个动画.目前,我写这个:

$('div1').fadeOut('slow', function() {
    $('div2').fadeOut('slow', function() {
        $('div3').fadeOut('slow');
    });
});
Run Code Online (Sandbox Code Playgroud)

这是丑陋的,但可管理.

现在想象一下,我有10种不同的动画需要在不同的元素上一个接一个地发生.突然,代码变得如此笨重,以至于管理起来非常困难......

这是我想要做的伪代码:

$('div1').fadeOut('slow' { delay_next_function_until_done: true } );
$('div2').fadeOut('slow' { delay_next_function_until_done: true } );
$('div3').animate({ top: 500 }, 1000 );
Run Code Online (Sandbox Code Playgroud)

我该如何实现这一目标?

jquery html5 jquery-ui jquery-callback jquery-animate

15
推荐指数
1
解决办法
4794
查看次数

jquery ajax忽略500状态错误

我正在向App Engine应用程序发出一些GET请求,在Chrome中进行测试.虽然我可以在javascript控制台中看到一些调用导致500服务器错误,但我似乎无法在我的jQuery代码中发现捕获此错误,尽管读取了许多类似的SO线程.我知道它表示服务器端错误,但我仍然希望能够从我的javascript中捕获这样的错误.

我需要捕获错误,以便我可以计算响应的数量(成功或其他),并在收到所有呼叫响应时触发另一个功能.

Chrome控制台输出:

GET http://myapp.com/api?callback=jQuery12345&params=restOfParams 500 (Internal Server Error)
Run Code Online (Sandbox Code Playgroud)

我的电话:

  function makeCall() {
    var count = 0;
    var alldata = $('#inputset').val();
    var rows = alldata.split('\n');
    var countmatch = rows.length;
    for (i=0;i<rows.length;i++) {
      data["param"] = rows[i]["val"];
      $.ajax({
              url: apiUrl,
              type: 'GET',
              data: data,
              dataType: 'jsonp',
              error: function(){
                  alert('Error loading document');
                  count +=1;
              },
              success: function(responseJson) {
                            count +=1;
                            var res = responseJson.results;
                            if (count == countmatch) {
                              allDoneCallback(res);
                            }
                        },
             });
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了以下一些方法:
添加:

statusCode: {500: function() {alert('err');}}
Run Code Online (Sandbox Code Playgroud)

打电话. …

jquery jquery-callback

13
推荐指数
1
解决办法
2万
查看次数

Jquery fadeOut/fadeIn回调无法正常工作

我正在建立一个小脚本来动画列表.这是我的html结构:

<ul>
   <li class="slider"> Item-1 </li>
   <li class="slider"> Item-2 </li>
   <li class="slider"> Item-3 </li>
   ...
   <li class="slider"> Item-13 </li>
   <li class="slider"> Item-14 </li>
   <li class="slider"> Item-15 </li>
</ul>

<button> Next </button>
Run Code Online (Sandbox Code Playgroud)

我一次只显示四个li,"下一个"按钮淡出显示的四个li et fade接下来的四个.但是,这些趋势同时适用于两者.我试图在第一次淡入淡出时使用回调函数,但我无法使其工作.

这是脚本:

$('li:gt(3)').css('display', 'none');

//Define the interval of li to display
var start = 0;
var end = 4;

//Get the ul length
var listlength = $("li").length;

$("button").click(function() { 

  // FadeOut the four displayed li 
  $('ul li').slice(start,end).fadeOut(500, function(){

        // Define the next interval of four li to …
Run Code Online (Sandbox Code Playgroud)

jquery callback jquery-callback

12
推荐指数
2
解决办法
1万
查看次数

什么是jQuery钩子和回调?

我很难概念化jQuery中究竟回调或挂钩的内容.他们似乎被混为一谈,但我不知道他们之间的区别.

根据我对其他关于回调的帖子的理解,像这样,回调只是一个函数A,你传递给另一个函数B,一旦B完成就调用A. (这可能是完全错误的,如果是这样,请纠正我).

除了声明"你应该使用钩子/回调"之外,我真的对钩子没有任何想法.有些东西让我怀疑他们是那么相似......

jquery jquery-callback

11
推荐指数
1
解决办法
5712
查看次数

jQuery ajax回调从未调用过

Javascript代码,使用jQuery 1.7:

$( function() { 
  $.get('/ajax_dummy', function() { alert('foo');  })
});
Run Code Online (Sandbox Code Playgroud)

使用Firebug,我可以看到HTTP GET请求已发送,并返回代码为200的"hello world"响应,因此一切似乎都很好.但回调永远不会被调用.

我不知道出了什么问题; 这应该是这么简单吧?

javascript jquery jquery-callback

11
推荐指数
2
解决办法
9260
查看次数