jQuery зовет функцию по имени

у меня есть функция

<script type="text/javascript">
    $(function () {
        $("#search").click(function() {
            var text = $("#searchText").val();
            $.getJSON("Search", { world: text, filter: text }, function(data) {
                $("tr.DataRow").toggle(false);
                for (i = 0; i < data.length; i++) {
                    $("#obj" + data[i]).toggle(true);
                }
            });
        })            
    });


</script>

теперь у меня есть другая функция

<script type="text/javascript">

    $(function() {
        $('#searchText').bind('keypress', function(e) {
            if (e.keyCode == 13) {

            }
        });
    });
</script>

как я могу вызвать первую функцию от второй функции?

16
задан kusanagi 15 December 2009 в 01:25
поделиться

4 ответа

Вы можете вызвать событие щелчка для элемента, который вы зарегистрировали первой функцией

<script type="text/javascript">

    $(function() {
        $('#searchText').bind('keypress', function(e) {
            if (e.keyCode == 13) {
                $('#search').click(); // Raise a click event on #search element
            }
        });
    });
</script>
20
ответ дан 30 November 2019 в 15:32
поделиться
// first function
$(function() {
  $.yourFavoriteFunctionName = function() {
    // the code for the first function
  };
  $.yourFavoriteFunctionName();
});

затем

// second function
$(function() {
  // whatever
  if (foo)
    $.yourFavoriteFunctionName();
12
ответ дан 30 November 2019 в 15:32
поделиться

Извлеките логику из первого обработчика событий в именованную функцию:

function doSearch() {
    var text = $("#searchText").val();
    $.getJSON("Search", { world: text, filter: text }, function(data) {
        $("tr.DataRow").toggle(false);
        for (i = 0; i < data.length; i++) {
            $("#obj" + data[i]).toggle(true);
        }
    });
}

Теперь вы можете передать doSearch по имени обработчику кликов:

    $(function () {
        $("#search").click(doSearch);
    });

и явно вызвать это из обработчика ключей:

    $(function () {
        $('#searchText').bind('keypress', function(e) {
            if (e.keyCode == 13) {
                doSearch();
            }
        });
    });
20
ответ дан 30 November 2019 в 15:32
поделиться

вы могли бы дать ему имя? я что-то упускаю?

отредактируйте: , чтобы понять это правильно

<script type="text/javascript">
function() myfunction{
    var text = $("#searchText").val();
    $.getJSON("Search", { world: text, filter: text }, function(data) {
        $("tr.DataRow").toggle(false);
        for (i = 0; i < data.length; i++) {
            $("#obj" + data[i]).toggle(true);
        }
    });
}

$(function(){
    $("#search").click(myfunction);
});
</script>

, а затем

<script type="text/javascript">

$(function() {
    $('#searchText').bind('keypress', function(e) {
        if (e.keyCode == 13) {
            myfunction();
        }
    });
});
</script>
1
ответ дан 30 November 2019 в 15:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: