使用live()方法重新绑定后,单击不会第一次触发

时间:2011-06-29 20:58:50

标签: drupal-views toggle jquery

我知道这可能是一个noob-ish问题,但我对同一主题中找到的其他主题没有运气。

我已经设计了一种解决方法来破解视图暴露过滤器以隐藏和显示库存数为“0”的产品。库存计数的外露过滤器(输入#edit-stock)用CSS隐藏,自定义块内部是操作表单并触发查询的链接(使用ajax)。这很好用,但有一个例外 - 使用视图提供的“重置”按钮重置表单后,toggle()将不会正确地重新链接到链接,并且第一次点击不会触发。在第二次点击时工作正常。我确信解决方案很简单,但我很茫然......

如何有效地重新绑定toggle()?

抱歉,我无法提供实际示例。非常感谢任何意见。

CUSTOM BLOCK:

    <a id="toggle" href="#">exclude</a>

JQUERY:

$(document).ready(function () {        

    var include = function () { 
        $('input#edit-stock').attr('value', 0).submit();
        $('a#toggle').html('include');
    }; 

    var exclude = function () {
        $('input#edit-stock').attr('value', '').submit();
        $('a#toggle').html('exclude');
    }; 


    $('a#toggle').toggle(include, exclude);


    $('input#edit-reset').live('click', function (event) {
      $('a#toggle').unbind('toggle').toggle(include, exclude).html('exclude');
    });


});

1 个答案:

答案 0 :(得分:0)

如果我遇到问题,你需要重置切换。为什么不是取消绑定切换和重新绑定,如果链接==要包括,你只是不模拟点击?

$(document).ready(function () {        

    var include = function () { 
        $('input#edit-stock').attr('value', 0).submit();
        $('a#toggle').html('include');
    }; 

    var exclude = function () {
        $('input#edit-stock').attr('value', '').submit();
        $('a#toggle').html('exclude');
    }; 


    $('a#toggle').toggle(include, exclude);


    $('input#edit-reset').live('click', function (event) {
        //if the link is include, click it so that it resets to exclude, else do nothing
        if ($('a#toggle').html() == 'include'){
            $('a#toggle').click();
        }
    });


});

在这里摆弄:http://jsfiddle.net/PSLBb/

(希望这是你要找的)