2013-09-19 4 views
0

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

Ниже мой HTML

<img src="Image/icons/preview.png" alt="Preview" id="img1" onclick="ViewHtml(this.id);" /> 

<a id="ancHeader">Header html</a> 

<div class="collapse"> 
    <textarea rows="30" cols="22" id="txtHtmlHead" class="editor"></textarea> 
</div 

Я хочу, чтобы получить идентификатор текстового поля на click.below изображения моя функция Javascript

function ViewHtml(id) { 
    $("#" + id).siblings('div.collapse first > textarea.editor').val(); 
} 

Но приведенный выше код не работает. Может ли кто-нибудь мне помочь ...?

+0

document.getElementbyId() .. посмотреть вверх – joshua

+0

Не совсем понятно, чего вы пытаетесь достичь. Я смутился. Одна сильная рекомендация. Сделайте учебник на http://try.jquery.com. Это время было потрачено, в частности ... $ (this) .closest ('# id of interest ...) – zipzit

ответ

2

Try :

function ViewHtml(id) { 
    var id = $("#" + id).siblings('div.collapse').children('textarea.editor').prop('id'); 
} 

См. jsFiddle.

Я бы порекомендовал против использования onClick. Так как вы используете JQuery, вы можете сделать это:

$('#img1').click(function() { 
    var id = $(this).siblings('div.collapse').children('textarea.editor').prop('id'); 
}); 

Установите переключатель по мере необходимости, если вам это нужно на более чем одно изображение.

Это все предполагается, что выбранный вами div всегда относится к изображению. Если в противном случае, вы можете упростить и оптимизировать это:

$('#img1').click(function() { 
    var id = $('.collapse > .editor').prop('id'); 
}); 
+1

LOL Я думаю, наши изменения конфликтуют, в любом случае хорошо один –

+0

Спасибо большое Это работает .. :) –

0

Зачем вам тяжело? Если у вас есть, что точно такую ​​же структуру и только 1 вхождение ниже поможет вам

$('img').on('click', function(){ 
    var textareaId = $('.collapse textarea').attr('id'); 
    $('.collapse textarea').val(textareaId); 
}); 

В противном случае, завернуть все это в DIV

<div id="wrapper"> 
    <img src="Image/icons/preview.png" alt="Preview" id="img1" /> 
    <a id="ancHeader">Header html</a> 
    <div class="collapse"> 
     <textarea rows="30" cols="22" id="txtHtmlHead" class="editor"></textarea> 
    </div> 
</div> 

и JQuery

$('#wrapper img').on('click', function (e) { 
    var textareaId = $(this).siblings('.collapse').children('textarea').attr('id'); 
    $('.collapse textarea').val(textareaId); 
}); 
0

Попробуйте:

$("#img1").click(function() { 
    $(".collapse textarea").attr("id"); 
}); 

DEMO

+0

Почему '.атр() '? Почему бы не '.prop()'? –

+0

Значение атрибута может быть только строкой, тогда как свойство может быть любого типа. Например, проверенное свойство является логическим, свойство style - это объект с индивидуальными свойствами для каждого стиля, свойство size - число. Так что я использовал attr (id) –

+0

Я считаю, что свойство 'id' всех HTML-элементов это строка. –

-1

Я думаю, что лучше использовать атрибут данных элемента.

<img src="Image/icons/preview.png" alt="Preview" data-rel="txtHtmlHead1" id="img1" class="getHtml"/> 

<a id="ancHeader" >Header html</a> 

<div class="collapse"> 
    <textarea rows="30" cols="22" id="txtHtmlHead1" class="editor"></textarea> 
</div 

Просто управлять динамическим атрибутом data-rel. txtHtmlHead1

function ViewHtml(id) { 

    $("#" + id).siblings('div.collapse first > textarea.editor').val(); 
} 

$(document).ready(function(){ 

$(".getHtml").bind('click',function(){ 
var getTextAreaId = $(this).data('rel'); 

if(getTextAreaId != undefined){ 

    alert($("#"+getTextAreaId).val()); // your output 
    } 


}); 
}) 

Я просто заменил свой ViewHtml путем связывания его с Click события.

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