Из вашего примера кода похоже, что this
внутри обработчиков отмены и сохранения является элементом #dialog
, так что вы можете перейти ко всем его дочерним элементам. Однако было бы гораздо надежнее использовать селектор вместо обхода. Что-то вроде $(this).find(':file').val()
должно работать.
Использование селекторов сделает ваш код более устойчивым, так как он будет продолжать работать, даже если вы добавите в свой диалог дополнительные элементы. Как отмечают некоторые комментаторы, присвоение элементу управления загрузкой файла уникального идентификатора облегчит его выбор с помощью простого селектора. Если вам нужен код для работы с несколькими диалоговыми окнами с разными идентификаторами для поля загрузки, вы можете использовать класс или другие конкретные селекторы, такие как селектор : file , упомянутый выше, в сочетании с методом .find в конкретный контекст.
Чтобы помочь вам в дальнейшем, нам может понадобиться немного больше контекста, например, содержание содержимого элемента #dialog. Возможно, было бы полезно упомянуть плагин jQuery, который определяет метод .dialog.