Как получить имя элемента управления пользовательского интерфейса, который начал событие? - PullRequest
4 голосов
/ 01 февраля 2011

У меня есть следующий код, который реализует 2 jQuery слайдеры :

<script type="text/javascript">
    $(document).ready(function () {
        $("#wheelLeft").slider({ value: 50, min: -100, max: 100, slide: handleSlide });
        $("#wheelRight").slider({ value: -10, min: -100, max: 100, slide: handleSlide });
    });

    function handleSlide(event, ui) {
        $("#lblInfo").text(ui.id + ':' + ui.value);
    }
</script>

Как видите, оба слайдера генерируют событие слайда, которое обрабатывается функцией handleSlide.Внутри функции handleSlide я могу получить значение ползунка, вызвав ui.value, но как мне узнать, какой ползунок фактически сгенерировал событие?

Я пробовал ui.id, ui.nameи некоторые другие, которые казались логичными, но все они возвращаются как неопределенные.Как получить фактическое имя его реализации CSS (например, #wheelRight или #wheelLeft)?

Спасибо.

Ответы [ 3 ]

5 голосов
/ 01 февраля 2011

Попробуйте обернуть ui.handle

function handleSlide(event, ui) {
  $("#lblInfo").text( $(ui.handle).attr("id") + ':' + ui.value);
}

Редактировать : К сожалению, возвращается элемент "a". Это должно вернуть идентификатор родительского элемента:

$(ui.handle).parent().attr('id')
1 голос
/ 01 февраля 2011

Вы можете передавать селекторы идентификаторов (или любые аргументы по вашему выбору) непосредственно в функцию обработчика:

$(document).ready(function () {
    $("#wheelLeft").slider({
        value: 50, min: -100, max: 100,
        slide: function(event, ui) {
            handleSlide(event, ui, "#wheelLeft");
        }
    });
    $("#wheelRight").slider({
        value: -10, min: -100, max: 100,
        slide: function(event, ui) {
            handleSlide(event, ui, "#wheelRight");
        }
    });
});

function handleSlide(event, ui, idSelector)
{
    $("#lblInfo").text(idSelector);
}
0 голосов
/ 01 февраля 2011
function handleSlide(event, ui) {
    var sender = event.srcElement || event.target;
     $("#lblInfo").text(ui.id + ':' + ui.value);
}

sender должен содержать необработанный элемент, вызвавший событие.

...