标签: jquery-callback

jQuery的.如何使用queue()与使用回调函数完成某些事情?

HTML:

<span>hello world!</span>
Run Code Online (Sandbox Code Playgroud)

js :(使用回调)

$('span').click(function() {
  $(this).animate({
    fontSize: '+=10px'
  }, 'slow', function() {
    // callback after fontsize increased
    $(this).text(  $(this).text() + ' rolled! ' );
  });
});
Run Code Online (Sandbox Code Playgroud)

因此,每次SPAN单击时,在字体大小增加后附加文本"滚动",而不是一起发生.

它可以通过使用queue()来完成,如下所示:

js :(使用queue())

$('span').click(function() {
  $(this).animate({
    fontSize: '+=10px'
  }, 'slow'})
  .queue(function() {
    $(this).text(  $(this).text() + ' rolled! ' );
  });
});
Run Code Online (Sandbox Code Playgroud)

我不确定它们之间有什么区别.都做同样的事情.

为什么queue()比使用回调更好/更喜欢(或者为什么不是)?queue()有什么特别之处?

谢谢.

javascript queue jquery jquery-callback

7
推荐指数
1
解决办法
1056
查看次数

jQuery Callback和Pub/Sub

在过去,我通过在窗口上绑定在jQuery中完成了非常简单的pub/sub.

// subscribe
$( window ).on("someEvent", function() { ... });

// publish
$( window ).trigger("someEvent");
Run Code Online (Sandbox Code Playgroud)

但是我最近了解了新的回调功能,这似乎是在jQuery中处理pub/sub的推荐方法.

使用回调有什么好处,而不仅仅是在窗口上绑定?对于像上面这样的简单系统,使用回调功能是否过度杀伤?

编辑:这里有更多关于我如何使用上述内容的信息......

这有点我有时会允许我的jQuery插件相互通信.例如,我有自己的需要通信的可拖动和可放置的插件.

当拖动开始,更新和停止时,可拖动插件会触发窗口上的自定义事件.droppable插件会监视这些事件并做出相应的反应.

// in draggable

onStart: function() {
  $( window ).trigger("dragger.start", [data]);
}

// in droppable

$( window ).on("dragger.start", function(event, data) {
...
});
Run Code Online (Sandbox Code Playgroud)

javascript jquery publish-subscribe jquery-callback

7
推荐指数
1
解决办法
1195
查看次数

在jquery click事件中将参数传递给回调函数

直接的业务:

我有一个jquery事件监听器,如下所示:

$(".number").click(printNumber);
Run Code Online (Sandbox Code Playgroud)

和回调函数:

function printNumber(number){
   console.log(number);
}
Run Code Online (Sandbox Code Playgroud)

我想知道我是否可以将一个参数传递给回调,所以它看起来像这样

$(".number").click(printNumber(number));
Run Code Online (Sandbox Code Playgroud)

(我知道它会立即调用该函数,但仍然有一种方法可以将参数传递给它)

先感谢您!

javascript jquery callback jquery-callback

7
推荐指数
2
解决办法
8406
查看次数

如果jQuery函数在其完成回调中调用自身,那对堆栈的递归危险是什么?

我正在编写一个小的jQuery组件,它响应按钮按下而动画,也应该自动进行.我只是想知道这个函数是否递归,我不能完全解决它.

function animate_next_internal() {

  $('#sc_thumbnails').animate(
    { top: '-=106' }, 
    500, 
    function() {
      animate_next_internal();
    }
  ); 
}  
Run Code Online (Sandbox Code Playgroud)

我的实际功能更复杂,允许停止和启动,这只是一个简化的例子.

编辑它可以是否溢出堆栈,具体取决于事件在内部处理的方式.可能性:

  1. animate()directy调用完成的回调,在这种情况下溢出是不可避免的.

  2. animate()通过一些外部调度机制调度回调以进行调用然后终止,在这种情况下它永远不会溢出.

recursion jquery jquery-callback

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

在jQuery插件中编写回调函数

我正在编写一个jQuery插件,所以我可以在很多地方重用这个代码,因为它是一个非常好用的代码片段,代码本身为一个已经从隐藏行克隆的表添加了一个新行,它继续在新行上执行大量操作.

我目前正在引用它:

$(".abc .grid").grid();
Run Code Online (Sandbox Code Playgroud)

但是我希望包含一个回调函数,因此调用插件的每个区域都可以在添加行时执行更独特的操作.我之前使用过jQuery AJAX插件,因此使用了success回调函数,但无法理解代码在后台如何工作.这就是我想要实现的目标:

$(".abc .grid").grid({
    row_added: function() {
        // do something a bit more specific here
    }
});
Run Code Online (Sandbox Code Playgroud)

这是我的插件代码

(function($){           

    $.fn.extend({ 

        //pass the options variable to the function
        grid: function() {

            return this.each(function() {

                grid_table=$(this).find('.grid-table > tbody');
                grid_hidden_row=$(this).find('.grid-hidden-row');
                //console.debug(grid_hidden_row);
                $(this).find('.grid-add-row').click(function(event) {
                /* 
                 * clone row takes a hidden dummy row, clones it and appends a unique row 
                 * identifier to the id. Clone maintains our jQuery binds
                 */

                    // get the last id
                    last_row=$(grid_table).find('tr:last').attr('id');
                    if(last_row===undefined) …
Run Code Online (Sandbox Code Playgroud)

jquery jquery-callback

6
推荐指数
1
解决办法
4056
查看次数

如何扩展jQuery的animate-step函数

有关如何step在jQuery 1.6+中扩展-function的任何想法?

我做了一个特殊事件来触发custom-event每个动画步骤.但是,由于jQuery的动画方法已经改变,或者说step函数不再可扩展($.fx.step导致为空object),因此无法用自己的东西扩展它.

(function($){
    var oldStep = $.fx.step._default;
    $.event.special.animating = { };
    $.fx.step._default = function( fx ) {
        $(fx.elem).trigger('animating', fx);
        oldStep.apply( this, arguments );
    };
}(jQuery));

$('#foo').animate({width: 200});
$('#foo').bind('animating', function(e, fx){
    console.log(fx);
});
Run Code Online (Sandbox Code Playgroud)

任何想法如何使用更新的jQuery版本?

jquery jquery-callback custom-events jquery-animate

6
推荐指数
1
解决办法
650
查看次数

Jquery触发器以编程方式触发事件并等待上一个事件的操作完成以触发下一个事件

我是jquery的新手.假设我有一个10"a"标签的列表,它们分别附加到事件处理程序mouseover,click,mouseout.
我想要做的是迭代所有"a"元素并使用jquery触发器触发这些事件.
我面临的问题是,这些事件需要一段时间才能被触发,因此当我运行代码时,我只看到结果只在最后一个元素上发生变化.而不是中间体.

$.each($("#styles a"), function(){
    console.log("picked up " + $(this));
    setTimeout(qwe($(this)), 2000);
});

function qwe(obj) {
    console.log(obj.attr("id"));
    $.when(obj.trigger("mouseover").trigger("click").trigger("mouseout"))
        .then(function () {
            console.log("Changing Result Value" + $("#textTag").text());
        });
}
Run Code Online (Sandbox Code Playgroud)

有没有办法按顺序链接这些事件,即
只有当第一个元素的触发动作完成时才应触发第二个元素的事件.我尝试搜索SO,但大多数文章围绕触发仅单个事件.谢谢

javascript jquery jquery-callback

6
推荐指数
1
解决办法
3074
查看次数

jQuery AJAX 请求 302 重定向 - 哪些回调可用?

我正在使用一个使用 jQuery 1.2.6 的旧系统。我正在通过该函数发送 AJAX 请求jQuery.ajax。它所访问的 URL 正在发送 302 HTTP 重定向响应,并最终以 200 HTTP OK 响应结束。我已经注册了 asuccess和complete回调,但是它们都没有被调用。

我的问题是:重定向发生后是否可以/将调用任何回调?

jQuery.ajax({
    type: "GET",
    url: url,
    data: null,
    dataType: "json",
    async: false,
    success: function(data, textStatus) {
        alert("SUCCESS CALLED: " + textStatus);
    },      
    complete: function(xhr, status) {
        alert("COMPLETE CALLED");
    }
});
Run Code Online (Sandbox Code Playgroud)

注意:响应是 HTML,而不是 JSON,但是更改dataType会html改变请求。它发送OPTIONS请求而不是GET请求,并且也不再重定向。我需要这些重定向发生。

jquery redirect jquery-callback

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

jQuery Callback函数不会采用function()的名称,必须具有匿名函数

这有效:

$("#formbottom").slideUp(speed,'swing',function(){
    openSubmitting();
});
Run Code Online (Sandbox Code Playgroud)

这不是:

$("#formbottom").slideUp(speed,'swing',
    openSubmitting()
);
Run Code Online (Sandbox Code Playgroud)

当你有回调时,你是否总是必须有一个匿名功能?你不能只是把你要打电话的功能?

jquery jquery-callback

5
推荐指数
2
解决办法
1754
查看次数

Rails Ajax,成功回调数据未定义

所以我对 Rails 相当陌生。

这是我的问题:

我的咖啡脚本中有一个 Ajax 调用到租户模型,编辑页面。

$("#tenant_tenantbuildinginfo").change ->
    $.ajax
        url: "/buildings/getgst",
        dataType: "json",
        data: 'buildinginfo' : $(this).val(),
        success: (data) ->
            console.log data
            $("#tenant_gst").val data
        error: (data) ->
            console.log 'error'
    return false
Run Code Online (Sandbox Code Playgroud)

所以这个ajax调用的想法是从建筑物控制器中的方法返回一个税率,比如“5.6”,(完美地工作)......

   def getgst
     d { 'gets fired' }
     s = Building.get_gst_for_building(params[:buildinginfo])
     d { s.to_s('F') }
     @var = s.to_s('F')

     respond_to do |format|
       format.json { render json: @var }
     end

   end
Run Code Online (Sandbox Code Playgroud)

d { } 行是记录器,这就是为什么我知道正在调用该函数并返回正确值的原因。很好,到目前为止,Ajax 调用运行良好。但是,现在我的问题是解析或呈现成功函数中的返回值。

success: (data) ->
console.log data
$("#tenant_gst").val data
Run Code Online (Sandbox Code Playgroud)

AJAX 调用的这一部分在我的控制台中返回“未定义”,这真的很奇怪,因为在我的控制器操作中,我将 @var 渲染为 json,而 ajax 调用需要 …

ajax jquery ruby-on-rails jquery-callback

5
推荐指数
1
解决办法
3359
查看次数