2013-03-24 60 views
0

如何将“点击”功能分配给使用Dropkick jQuery plugin样式的<select>元素?踢反弹球不直接支持click功能,所以我想创建一个单独的“点击”功能,但我一直在尝试,方法不起作用将点击功能分配给使用Dropkick jQuery插件样式的select元素

$('#Select1').click(function() { 
    var $select2 = $('#Select2'); 
    removeDefaultFromSelect($select2); 
}); 

我知道,改变的事件处理程序必须被分配该插件的'自定义change回调',但我假设有一种方法可以在Dropkick 样式的元素上调用click函数(特别是因为this SO posting似乎暗示可以在Dropkick的自定义change回调中调用它')

我试图添加一个点击函数,以便在单击'#Select1'时触发下面的函数,而不仅仅是当它被更改时触发。我已经张贴在这里的功能的工作示例:http://jsfiddle.net/chayacooper/zJ5c3/#username

现有功能

// Helper function that removes "_default" from the end of the option values for the given select element. 
function removeDefaultFromSelect($select) { 
    $select.find('option[value$=_default]').prop('value', function(i, value){ return value.replace(/_default$/g, ''); 
    }); 
} 

$('#Select1').dropkick({ 
    change: function(value) {  
     var $select2 = $('#Select2'); 
     removeDefaultFromSelect($select2); 
     $select2.val(value);  
    } 
}); 

回答

0

我还没有找到一种方法来使用click事件与踢反弹球,但我已经想通了通过创建2组<select>元素 - 一组使用标准元素并隐藏display:none以及另一组使用Dropkick并且对用户可见的临时解决方法有点复杂。因为它使用change()方法,所以如果用户点击下拉框然后有意识地决定离开“默认”值,则该值不会被修改。

我已经发布了我在这里使用的方法的小提琴:http://jsfiddle.net/john_s/yhAX5/4/

function removeDefaultFromSelect($select) { 
    $select.find('option[value$=_default]').prop('value', function(i, value){ return value.replace(/_default$/g, ''); 
    }); 
} 

$('#Select1').dropkick({ 
    change: function(value) { 
     var $select2 = $('#Select2'); 
     removeDefaultFromSelect($select2); 
     $select2.val(value); 
    } 
});