Более чистый способ ссылки на имя селектора - PullRequest
1 голос
/ 06 февраля 2012

Код ниже работает, но я подозреваю, что есть уборщик.

Любая альтернатива для ссылки на имена селекторов, особенно первый по-другому?

jQuery

$(".add_one_more").click(function(){            
            var themsg = $(this).parent().attr('id');            
            $('"#'+themsg+'"').stop().fadeOut("slow",function(){                
                $("#entry_area").stop().fadeIn("slow");
            });

            return false;             
        });

HTML

<div id="entry_area">Form Goes Here</div>
<div id="msg0">
    <span style="font-size: 130%; color: green;">One Message</span>
    <a href="" class="add_one_more">Try Again</a>
</div>
<div id="msg1" style="width: 550px;">
    <span style="font-size: 130%; color: red;">Another Message</span>
    <a href="" class="add_one_more">Try Again</a>
</div>

Ответы [ 4 ]

3 голосов
/ 06 февраля 2012

Вам не нужно выбирать родителя и получать его идентификатор.

    $(".add_one_more").click(function(){                      
        $(this).parent().stop().fadeOut("slow",function(){                
            $("#entry_area").stop().fadeIn("slow");
        });

        return false;             
    });
1 голос
/ 06 февраля 2012

Мне очень нравится то, что вы делаете, но я добавлю свои мысли о том, как сделать ваши js более устойчивыми к перемещению фигур.

JS

$("#entry_area, div.message").bind("stop", function(evt){
   $(this).stop().fadeIn("slow");
} );

$(".add_one_more").click(function(evt){   
  $(this).closest("div.message").trigger("stop");
  $("#entry_area").trigger("stop");      
            return false;             
        });

html

<div id="entry_area">Form Goes Here</div>
<div id="msg0" class="message">
    <span style="font-size: 130%; color: green;">One Message</span>
    <a href="" class="add_one_more">Try Again</a>
</div>
<div id="msg1" class="message" style="width: 550px;">
    <span style="font-size: 130%; color: red;">Another Message</span>
    <a href="" class="add_one_more">Try Again</a>
</div>
0 голосов
/ 06 февраля 2012

Как насчет

var themsg = $(this).parent();
themsg.stop() ...
0 голосов
/ 06 февраля 2012

На самом деле, я бы сказал, что вам не нужно хранить id, если вы не используете его в конце концов, попробуйте:

$(".add_one_more").click(function(){            
        var $parent = $(this).parent();            
        $parent.stop().fadeOut("slow",function(){                
            $("#entry_area").stop().fadeIn("slow");
        });

        return false;             
    });

или даже короче, без сохранения объекта jquery в var ([EDIT] Это именно то, что Дэниел опубликовал, когда я писал это).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...