Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   найти нужную ссылку / find() (https://javascript.ru/forum/jquery/7688-najjti-nuzhnuyu-ssylku-find.html)

незнайка 15.02.2010 03:13

найти нужную ссылку / find()
 
Здравствуйте.

Подскажите, мне нужно найти ссылку в которой в id есть "build-" и class="active" и после этого получить полный id найденной ссылки

$("a[id*='build-']").find("active")
искать наверно можно так, но =)) как получить полный id найденной ссылки? =)

спасибо

Octane 15.02.2010 03:46

var id = $('a[id^="build-"].active').attr("id");

незнайка 15.02.2010 09:49

спасибо =)

незнайка 15.02.2010 10:58

ммм.. на странице есть несколько групп ссылок с id="build-номера" с id="type-номера" и т.д.

есть функция, в которую хочу добавить возможность определять при нажатии на какую ссылку и из какой группы вызвана эта функция, например для того, чтоб только в этой группе поменять класс 'active' (удалить, добавить) для какой-нибудь ссылки

если сделать так:
$('a.active').removeClass('active');
 $(this).toggleClass('active');


то меняются конечно все ссылки на странице с классом 'active', но хотелось бы менять только в одной из групп, в той, откуда вызвана эта функция

Спасибо

Octane 15.02.2010 17:04

покажите пример HTML-кода

незнайка 15.02.2010 21:07

Вот кусок HTML-кода (генерится из php)

<div id="bld_list_panel" class="scrollable">
	<ul class="items">
		<li><a id="build-1" class="navi" href="#1">Item1</a></li>
		<li><a id="build-3" class="navi" href="#3">Item3</a></li>
		<li><a id="build-0" class="navi active" href="#0">Item0</a></li>
	</ul>
</div>
<div id="dev_list_panel" class="scrollable">
	<ul class="items">
		<li><a id="dev-1" class="navi" href="#1">Item1</a></li>
		<li><a id="dev-3" class="navi" href="#3">Item3</a></li>
		<li><a id="dev-0" class="navi active" href="#0">Item0</a></li>
	</ul>
</div>
<div id="type_list_panel" class="scrollable">
	<ul class="items">
		<li><a id="type-1" class="navi" href="#1">Item1</a></li>
		<li><a id="type-3" class="navi" href="#3">Item3</a></li>
		<li><a id="type-0" class="navi active" href="#0">Item0</a></li>
	</ul>
</div>




Вот функция:
// это эвент по клику на одной из ссылок группы build
$("a[id*='build-']").live('click',listDev);
// это эвент по клику на одной из ссылок группы type
$("a[id*='type-']").live('click',listDev);


function listDev() {
    if(!load_in_process)
    { 		
            //  Хотелось бы менять "active" (добавить/удалить) только в одной из групп, в той, откуда вызвана функция listDev
    		$('a.active').removeClass('active');   
    		

            $(this).toggleClass('active');  

            load_in_process = true;	
            $.ajax(
            {	
                type: "POST",
                url: "/../lib/sw_ajax_lib.php",
                data: ({func :"listDev",build: $('a[id^="build-"].active').attr("id"), 
                						type:  $('a[id^="type-"].active').attr("id"), change:1}),
                dataType: "html",
                success:function (result) {	var api = $("#dev_list_panel").scrollable();
        									api.getItems().remove();
        									api.getItemWrap().append(result);
        									api.reload().begin();}
            });



Cпасибо

незнайка 16.02.2010 00:21

Пока решил проблему таким образом:

Заменил строку:
$('a.active').removeClass('active');

на

$(this).parent().parent().parent().find('a.active').removeClass('active');


но по моему - коряво очень =(

Octane 16.02.2010 11:32

<ul class="items">
	<li><a class="navi" href="#0">Item0</a></li>
	<li><a class="navi" href="#1">Item1</a></li>
	<li><a class="navi active" href="#2">Item2</a></li>
</ul>
<ul class="items">
	<li><a class="navi" href="#0">Item0</a></li>
	<li><a class="navi" href="#1">Item1</a></li>
	<li><a class="navi active" href="#2">Item2</a></li>
</ul>
<ul class="items">
	<li><a class="navi" href="#0">Item0</a></li>
	<li><a class="navi" href="#1">Item1</a></li>
	<li><a class="navi active" href="#2">Item2</a></li>
</ul>
<script type="text/javascript">
$(".items").click(function (e) {
	var target = $(e.target);
	if (target.hasClass("navi") && !target.hasClass("active")) {
		$(this).find(".active").removeClass("active");
		target.addClass("active");
		e.preventDefault();
	}
});
</script>

незнайка 16.02.2010 18:49

еех... Все просто.. :(

Спасибо!


Часовой пояс GMT +3, время: 05:45.