2014-02-03 2 views
1

У меня мало опыта работы с интерфейсом разработки, иголки, чтобы упомянуть о том, что веб-интерфейс не работает на моей планете.Как получить ссылочный элемент с JavaScript?

Проблема, которую мне нужно показать и скрыть элемент, в событии onClick кнопки. Стек технологии - это JSF с PrimeFaces, для скрипта мы используем JavaScript.

В принципе - как я могу получить ссылку на элемент, который мне нужно показать/скрыть? И не могли бы вы дать мне понять, почему строка (ниже) в комментарии работает хорошо?

function test(id, id2){ 
    var element =$(document).get("#testEl"); 
    $(element).show(); //this doesn't work??? although I get no errors executing it.. 
    // $("#tab-view\\:template-form\\:testEl").show(); // <-- however this works? Why? 
    $(btn).css("display", "none"); 
} 

HTML-:

<p:commandButton widgetVar="edit" id="edit" value="Edit" onclick="test(this, #testEl)" type="button"/>        
     <p:panel widgetVar="opa" id="testEl" closable="false" visible="false" > 
     <h:panelGrid ..>.... 
</h:panelGrid> 

</p:panel> 

Спасибо!

+3

Вы должны прочитать документацию вместо случайно заходящих функций. – SLaks

+0

Похоже, вы используете причудливый идентификатор для вашего элемента '# tab-view: template-form: testEl'. В этом случае вам придется скрывать двоеточие с '\\\'. – dfsq

+0

они скрыты в коде ... – karla

ответ

1

Как предположил Kuba ... что вызвало мое замешательство, что JSF compoments (наименования контейнеры как формы и композиции) "гнездо" их имена, основанные на значении prependId атрибута.

Таким образом, идентификатор на стороне клиента, представляющий интерес для меня, является составомID: formID: elID. И я мог бы получить его как:

function test(btn, wv){ 

$(PF(wv).jqId).show(); 

$(btn).css("display", "none"); 

}

0

попробовать это

function test(){ 
    $("#testEl").show(); 

и в вашем HTML

<div id="testEl"> ... </div> 
0
$("#testEl").show();//you can show and hide accordingly   
1

Вам просто нужно сделать $('elementid/name/class') ссылаться на элемент

так что вам нужно сделать $('#testEl')

function test(){ 
     var element = $("#testEl"); 
     element.show(); 
     $(btn).css("display", "none"); 
    } 
+0

Я тоже пробовал это, и он не работает .. – karla

+0

Я отредактировал свой ответ, он должен быть только 'element.show()' надеюсь, что он должен работать – Pengun

0

попробовать это:

$(id2).show(); 

вы должны использовать переданную id2 который ссылается идентификатор Элем в.

function test(id, id2){ 
    $(id2).show(); 
    ..... 
} 

здесь id2 является #testEl.

+0

Я действительно хочу. Как именно я должен это пройти? например: onclick = "test (this, #testEl)" ?? – karla

2

Прежде всего, проверьте, как выглядит этот идентификатор в сгенерированном HTML и использовать его в качестве базы. Если вы пытаетесь передать идентификатор из контейнера именования JSF, например formId:someId, тогда вам нужно скрыться от двоеточий, иначе jQuery считает их псевдоселекторами. Как правило, вы всегда должны указывать идентификаторы контейнеров с именами, таким образом вы избежите путаницы, когда увидите автогенерируемые идентификаторы JSF и не знаете, откуда они взялись. Проще всего в этом случае было бы избежать его в самом JS. Раньше у меня были проблемы с передачей экранированных идентификаторов в jQuery. Так установить OnClick:

onclick="test(this, 'formId:testEl')"; 

затем в JS:

function test(id, id2) { 
    id2 = id2.replace(/:/g, "\\:"); 
    $("#" + id2).show(); 
} 
Смежные вопросы