Gdy wejście zostanie zamazane, chcę uzyskać wartość wejścia i zastąpić słowo "działanie" w skrypcie, przy wartości wejściowej. Tak więc na przykład, jeśli wpiszę "Ukryj" w wejściu, słowo "działanie" zostanie zastąpione "Ukryj". Lub coś w tym celu.

Będę wtedy użyć tej logiki, aby zdefiniować wyzwalacz (#Elementa) i cel (#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
colmtuite 1 grudzień 2013, 08:55

2 odpowiedzi

Najlepsza odpowiedź

Użyj obiektu {x0}} notation

$(selector).hide(); może być napisany jako $(selector)['hide']()

Więc możesz przekazać zmienną zamiast ciężkiego ciągu

$(selector)[action]()

Uważaj, że otrzymasz błędy rzucone, jeśli metoda reprezentowana przez zmienną nie istnieje, więc prawdopodobnie należy utworzyć tablicę prawidłowych metod, które zaakceptujesz i upewnij się, że wartość znajduje się w tablicy przed wywołaniem metody

Przykład wartości testowych w tablicy:

var allowedMethods=['hide','show','slideUp'];
if( $.inArray( action, allowedMethods) >-1){
  $(selector)[action]()
}else{
    alert( action +' is not a valid method')
}
2
charlietfl 1 grudzień 2013, 05:17

Zamiast notacji dotacji do notacji wspornika

Nie sądzę też, abyś potrzebował użyć obsługi rozmycia, w programie Click Handler możesz odczytać wartość złożonego wejścia

$('#elementA').click(function () {
    var action = $('#define-action').val();
    $('#elementB')[action]();
});

Lub, jeśli chcesz użyć metody rozmycia, musisz zdefiniować zmienną action jest wspólnym zakresem zarówno kliknięć, jak i rozmycia ładowarki

$('#elementA').click(function () {
    $('#elementB')[action]();
});
var action;
$('#define-action').blur(function () {
    action = $(this).val();
});
1
Arun P Johny 1 grudzień 2013, 04:57