2013-02-25 5 views
1

Я написал сценарий, который показывает кнопку отправки при нажатии внутри области ввода. И при нажатии вне входа кнопка должна быть скрыта. Есть несколько областей и кнопок, поэтому я назначил уникальный идентификатор каждой кнопке и области.jQuery - Показать и скрыть кнопку

Проблема в следующем: когда я нажимаю на область, отображается кнопка. Но при нажатии снаружи ничего не происходит. Скрипт работает, если у меня есть только одна кнопки и область, но при назначении идентификаторов, он перестает работать ...

$(".textarea").click(function(e) { 
    var cid = $(this).attr('rel'); 

    $("#submit" + cid).show(); 
    e.stopPropagation(); 
}); 

$(document).click(function() { 
    $("#submit" + cid).hide(); 
}); 
+0

Объект 'document' не является областью, на которую можно щелкнуть. – kidwon

+0

Что-нибудь назначено для cid в момент нажатия на документ? – Brett

ответ

1
$(".textarea").click(function(e) { 
    var cid = $(this).attr('rel'); 

    $("#submit" + cid).show(); 
    e.stopPropagation(); 
}); 

$(document).click(function() { 
    //add logic to hide all submit buttons by assigning common class to all 
}); 
+0

Конечно, не могу понять, как я это забыл. Спасибо! – David

+0

отметьте это как ответ, если у вас есть решение :) Счастливое кодирование –

3

переменной cid объявлен в анонимном текстовом поле обработчика щелчка. Таким образом, когда другая функция вызывается в результате щелчка, она не имеет значения.

Изменить скрыть функцию к чему-то независимому от cid как этого

$(document).click(function() { 
    $("button[id*=submit]").hide(); 
}); 

id*=submit раздел будет выглядеть для всех кнопок, которые имеют submit в id и скрыть их. Это обойдется в необходимости отслеживания cid. Если у вас есть другие кнопки с submit в id, который вы не хотите скрывать, вам потребуется выбрать на основе класса или изменить формат id.