动态编写javascript部分

时间:2013-12-01 04:55:13

标签: javascript jquery

当输入变得模糊时,我想得到输入的值,并用输入的值替换脚本中的“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
)};

2 个答案:

答案 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();
});