Критика использования jQuery - PullRequest
3 голосов
/ 28 июня 2009

Я занят представлением себя в jQuery, внедряя небольшую систему, в которой onmouseover элемента заставляет всплывающее текстовое поле рядом с элементом. Мне кажется, что я использую слишком много ванильного JS здесь, поэтому, пожалуйста, предложите, где я могу улучшить и что не так с этим кодом:

<head runat="server">
    <script type="text/javascript" src="Scripts/jquery-1.3.2.js"></script>
    <script type="text/javascript">
        $('document').ready(function() {
            $('span.balloon').each(function() {
                this.style.display = "none";        
            });      

            $('span.ballooned').mouseover(function(event){
                if (event.currentTarget.attributes["balloonid"]) {
                    var blnArr = $("#" + event.currentTarget.attributes["balloonid"].value);
                    if (blnArr.length > 0) {
                        blnArr[blnArr.length - 1].style.display = "inline";                    
                    };
                };
            });
        });
    </script>
</head>
<body>
    <div>
        This is some text where I describe a <span class="ballooned" balloonId="bln-1">text field</span> and want to attach extra info to that phrase.
    </div>
    <span class="balloon" id="bln-1">nvarchar(8)</span>
</body>

Ответы [ 5 ]

11 голосов
/ 28 июня 2009
$(function() {
    $("span.balloon").hide();

    $("span.ballooned[balloonid]").mouseover(
        function() {
            var balloonid = "#" + $(this).attr("balloonid"); 
            $(balloonid).css("display", "inline");
        });
});
5 голосов
/ 28 июня 2009

Во-первых, позвольте мне сказать, что нет ничего плохого в использовании vanilla js, , если вы уверены, что это не зависит от браузера . Инфраструктура jQuery не предназначена для замены любого синтаксиса JavaScript. Я думаю, что большинство людей скажут, что jQuery предназначен для 1) исправления давней проблемы, заставляющей разработчиков бороться с войной браузеров, которую мы не можем контролировать, и 2) для упрощения сложных задач, которые регулярно необходимы для удовлетворения требований дня. .

Тем не менее, я бы порекомендовал вам использовать функции jQuery CSS для установки свойств.

2 голосов
/ 28 июня 2009

Красота jQuery в том, что есть плагин для всего, что вы хотите сделать. В духе этого, вы должны проверить один из моих любимых плагинов: jQuery BeautyTips . Это делает воздушные шары довольно приятно.

2 голосов
/ 28 июня 2009
$('document').ready(function() {

    $('span.balloon').hide();

    $('span.ballooned').mouseover(function(event){
        if ( this.balloonid ) {
            var blnArr = $("#" + this.balloonid);
            if (blnArr[0]) {
                $( blnArr[blnArr.length - 1] ).css('display', 'inline');              
            };
        }
    });

});

... Не уверен, что это сработает ... Мне интересно: почему вы используете свойства expando ("baloonid") - это немного навязчиво и грязно.

1 голос
/ 28 июня 2009
$('span.ballooned').mouseover(function(e){
  if ($(this).attr("balloonid")) 
    $("#" + $(this).attr("balloonid")).css('display','inline');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...