当输入变得模糊时,我想得到输入的值,并用输入的值替换脚本中的“action”。因此,例如,如果我在输入中键入“hide”,则单词“action”将替换为“hide”。或者是那种效果。
然后我将使用此逻辑来定义触发器(#elementA)和目标(#elementB)。
HTML
<input type="text" id="define-action">
<script id="interactions">
$('#elementA').click(function() {
$('#elementB').action();
)};
</script>
JS
$('#define-action').blur(function() {
var action = $(this).val();
// Replace "action" with action
)};
答案 0 :(得分:2)
使用对象[]
表示法
$(selector).hide();
可以写成$(selector)['hide']()
所以你可以传入变量而不是硬代码字符串
$(selector)[action]()
请注意,如果不存在由变量替换的方法,则会抛出错误,因此您应该创建一个您将接受的有效方法数组,并在调用方法之前确保值在数组中
在数组中测试值的示例:
var allowedMethods=['hide','show','slideUp'];
if( $.inArray( action, allowedMethods) >-1){
$(selector)[action]()
}else{
alert( action +' is not a valid method')
}
答案 1 :(得分:1)
而不是点符号使用括号表示法
另外我认为你不需要使用模糊处理程序,在点击处理程序中你可以读取输入字段的值
$('#elementA').click(function () {
var action = $('#define-action').val();
$('#elementB')[action]();
});
或者如果你想使用模糊方法,那么你需要定义变量action
是点击和模糊处理程序的共享范围
$('#elementA').click(function () {
$('#elementB')[action]();
});
var action;
$('#define-action').blur(function () {
action = $(this).val();
});