javascript - jquery ui-( slider )自定义事件绑定(bind)不起作用

标签 javascript jquery jquery-ui jquery-ui-slider custom-events

我在弄清楚为什么我的自定义事件无法触发和正常工作时遇到了一些问题...我的自定义事件应该附加到每一列,如何才能使 slider 仅绑定(bind)到一列(列)下面的对象)?使用我当前的代码,如果我单击任何列,所有列都会调整大小...

我正在尝试使用在小 div 内打开的 slider 动态调整表格列的大小,如果单击表格,则会加载我的小对话框,然后获取所有当前列宽度并添加事件处理程序,我的代码是:

//param: data = current table
function DisplayColumnData(data) {

    var cols = $(data).find("col");

   //attach slider to each col
    $(cols).each(function(i) {

            var that = this;

            var coldata = $("<div class='ui-col-data' />"); 
            var colvalue = $("<span class='ui-col-value' />");
                colvalue.text($(that).attr("width"));

            coldata.text(" >col" + i + ": ").append(colvalue);

            $(".ui-resizer-cols").append(coldata);

            //handle column resizing, bind each col to the slider...
            $(coldata).click(function() {
                $(".ui-col-data").unbind("resizehandler");
                //remove all other binded events then trigger the new event only...
                $(coldata).trigger("resizehandler", that);
            });

    });

}

$(".ui-col-data").live("resizehandler", function(event, data) {
    var $parent = $(this).closest(".ui-resizer-cols");

    //remove classes from all other cols so only the clicked col is resized
    $parent.find(".ui-col-data").removeClass("ui-col-border");
    $parent.find(".ui-col-value").removeClass("ui-resizer-val");

    $(this).addClass("ui-col-border"); //now the active col   

    var valfield = $(this).find("span.ui-col-value");
    valfield.addClass("ui-resizer-val");


    //update whatever...
    $("#ui-resizer").slider('value', valfield.text() );
    $("#ui-resizer").bind("slide", function(e, ui) {
        valfield.text(ui.value);
        $(data).attr("width", ui.value); //update col
    });

});

表格:

<table>
<colgroup>
      <col width="25%">
      <col width="25%">
      <col width="25%">
      <col width="25%">
</colgroup>
<tbody>
<tr>...</tr>// 4 td's here as normal
<tr>...</tr>
</tbody>
</table>

slider :

<div class="ui-resizer-content">
        <div id="ui-resizer" class="ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all">
        <div class="ui-slider-range ui-slider-range-max ui-widget-header" style="width: 100%;"></div><a href="#" class="ui-slider-handle ui-state-default ui-corner-all" style="left: 0%;"></a></div>
        <div class="ui-resizer-cols"></div>

           <p> <a href="#" id="lnkResizer" style="float: right;">close</a>
        </p>
    </div>

最佳答案

文档中对此不太清楚(至少对我来说),但修复方法是:

 $("#ui-resizer").slider({
                    slide: function(e, ui) {
                        valfield.text(ui.value + "%");
                        $(column).attr("width", ui.value); //update col
                    }
                });

显然,我使用的代码(如下)对于使用单个处理程序的所有 slider 来说是全局的,而上面的修复特定于 slider 的实例? (如果我理解正确的话)

$("#ui-resizer").bind("slide", function(e, ui) { ... }

关于javascript - jquery ui-( slider )自定义事件绑定(bind)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5840431/

相关文章:

jquery - 使用 jquery 在移动设备上无法运行的特定页面上隐藏 div

javascript - 一个输入文件生成多个输出文件

javascript - jQuery 插件开发 - 将参数传递给用户定义的回调函数

javascript - 基本网络音频 API 不播放声音

javascript - 如何在 IOS 上停止背景滚动?

javascript - jQuery 动画后偏移量不改变

jquery 从元素内选择

jquery - 向左展开箭头元素

javascript - 在 jQuery 确认框上添加是和否按钮

javascript - 使用 Redux 验证用户的流程