Как установить jQuery UI программно? - PullRequest
1 голос
/ 11 апреля 2010

Я заметил, что можно установить значение ползунка пользовательского интерфейса jQuery следующим образом:

$("#mySlider").slider("value", 42);

Это запускает обработчики событий, прикрепленные к ползунку, как и ожидалось.

Теперь я пытаюсь проделать тот же трюк с помощью кнопки (переключения). В API , похоже, нет хорошего способа сделать это. Я мог бы просто упустить что-то простое.

Я пробовал следующее безрезультатно:

$("#myButton").button().click();

Любые идеи, как справиться с этим в этом случае, приветствуются. Обратите внимание, что было бы замечательно найти решение, которое применимо и для набора кнопок.

Редактировать

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

function toggleBrushValue(hotkey, attributeName) {
    shortcut.add(hotkey, function(e) {
        //XXX: the missing part
        $("#" + attributeName).<something?>;
    });
}

function increaseBrushValue(hotkey, attributeName) {
    shortcut.add(hotkey, function(e) {
        var currentSize = $("#" + attributeName).slider("value");

        $("#" + attributeName).slider("value", currentSize + 1);
    });
}

Ответы [ 2 ]

2 голосов
/ 04 июля 2010

Прошло некоторое время, но, наконец, я нашел способ обойти эту проблему. :) Вот мое решение:

var $toggle = $("#" + attributeName);

$toggle.attr("checked", !$toggle.attr("checked")).button("refresh");

Поскольку переключатели пользовательского интерфейса jQuery получают свое начальное значение через «флажок», я решил использовать это в своих интересах. «refresh» также обеспечивает обновление визуального состояния.

1 голос
/ 11 апреля 2010

Попробуйте использовать .toggle (), как показано ниже:

$("#myButton").toggle(
    function() {
        $("#mySlider").slider("value", 42);
    },
    function() {
        // something else...
    }
);

Он также будет работать с набором кнопок, поскольку вы предоставляете правильный селектор. Например:

<input id="myButton" ...>
<input id="myButton" ...>
<input id="myButton" ...>

$('#myButton').toggle() будет выполнено для каждого из вышеуказанных элементов. Кроме того, если вам нужно взаимодействовать с кнопкой из самой функции, используйте this или $(this). Например:

$("#myButton").toggle(
    function() {
        alert($(this).attr('id'));
    },
    function() {
        alert($(this).attr('name'));
    }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...