2016-02-20 4 views
0

Я использую jQuery в приложении JSF. У меня есть радиокнопка, который имеет некоторый Ajax рендеринг при нажатии и на успехе, я стараюсь, чтобы удалить его (для простоты)Селектор компонентов JSF для jQuery

Моего Аякса обратного вызова выглядит так:

function ajaxOnSuccess(data) { 
    var getId = data.source.id; 
    $(getId).remove(); // This won't work 
} 

console.log($(getId)) возвращается [prevObject: n.fn.init[1], context: document, selector: "coverage:j_idt483:0:j_idt487:0:printableNts:select-one-radio:0"] - так что я думаю, что он не может найти элемент?

Как выбрать радиобуй?

ответ

1

первую очередь, $(getId).remove(); неправильный выбор JQuery, он должен быть:

$("#"+getId).remove(); 

но вы уверены, что идентификатор этого элемента действительно существует? Я спрашиваю вас об этом, потому что JSF добавляет префиксы к вложенным идентификаторам компонентов. откройте исходный код вашей сгенерированной страницы и найдите этот идентификатор и проверьте, существует ли он точно так же, как вы используете в JQuery-Selector.

другой вариант может использовать селектор класса, что-то вроде:

$(".classNameOfThatElement").remove(); 

или

YourElementParent.find(".classNameOfThatElement).remove(); 

UPDATE:

вы сказали в своем комментарии, что вы получите

"Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: j_idt483"

двоеточие (:) внутри сгенерированного идентификатора компонента вызывает это в селекторе JQuery byId.

теперь попробуйте это:

$(document.getElementById(getId)).remove(); 

это должно работать. я протестировал его :)

+0

Пробовал делать '$ (" # "+ getId) .remove();' но я получаю сообщение об ошибке: 'Uncaught Error: Ошибка синтаксиса, нераспознанное выражение: unsupported pseudo: j_idt483'. Радиообъекты находятся в 'ui: repeat', поэтому мне нужен идентификатор элемента, через который был запущен ajax. Кроме того, да, идентификатор, который я получаю в журнале консоли, совпадает с идентификатором элемента в DOM – ultimatecoder

+0

@ultimatecoder, добавьте в эту форму атрибут prependId = "false", так что вы можете получить доступ к своему идентификатору AS без префиксов и дать ему попробуйте, еще одна вещь, alert (getId) и скажите мне, что вы получаете! –

+0

Сделал это, но не повезло. Я получаю 'j_idt483: 0: j_idt487: 0: printableNts: select-one-radio: 0' когда я делаю' alert (getId) ' – ultimatecoder

Смежные вопросы