this.id в jQuery не будет извлекать идентификатор элемента, если он является числом или содержит числа - PullRequest
2 голосов
/ 01 апреля 2009

У меня есть куча автоматически сгенерированных div, у которых есть номер для их id. Всякий раз, когда я использую this.id для получения идентификатора, он ничего не выводит. Однако, когда идентификатор является только текстовым, он правильно выводит идентификатор. Как я мог это исправить? Все помогает. Спасибо

Edit:

$(".draggable").draggable();
$("*", document.body).click(function (e) {   
                var offset = $(this).offset();
                e.stopPropagation();
                $("#result").text(this.tagName + "  ID:" + this.id + " Coord:" + offset.left + " " + offset.top);
                $.post("http://localhost/framework/test.php", "id=" + this.id + "&x=" + offset.left + "&y=" + offset.top);
            });

Это код обидчика. Однако он получит идентификатор div, с классом «draggable» не примененным.

   <div id="container">

       <div id="1" class="draggable" style="top:55px; left:55px; border: 2px solid black; display: inline-table; position: relative; background-color: grey; max-width: 500px;">
            <div>Im an Image Posted by:Teh_noob Posted on: 9/15/1991</div>

            <div><img src="http://video.google.com/img/logo_video.gif?hl=en" /></div>
       </div>

       <div id="2" class="draggable" style="top:57px; left:33px; border: 2px solid black; display: inline-table; position: relative; background-color: grey; max-width: 500px;">
            <div>Youtube test Posted by:teh nub Posted on: 9/11/01</div>
            <div><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/_AJ0SkbPxAk&hl=en&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><embed id="flash" wmode="transparent" src="http://www.youtube.com/v/_AJ0SkbPxAk&hl=en&fs=1&rel=0" type="application/x-shockwave-flash" allowfullscreen="true" width="640" height="385"></embed></object></div>
       </div>

       <div id="3" class="draggable" style="top:33px; left:12px; border: 2px solid black; display: inline-table; position: relative; background-color: grey; max-width: 500px;">
            <div>Text box Posted by:teh noob Posted on: 8/23/09</div>

            <div>TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST</div>
       </div>

    </div>
    <p id="result"></p>

Ответы [ 4 ]

6 голосов
/ 01 апреля 2009

Обратите внимание, что числовые идентификаторы недействительны. См. этот пост для получения дополнительной информации.

Краткое и сладкое из этого:

Жетоны ID и NAME должны начинаться с буква ([A-Za-z]) и может сопровождаться по любому количеству букв, цифр ([0-9]), дефисы ("-"), подчеркивание ("_"), двоеточия (":") и точки ( "").

0 голосов
/ 23 июня 2011

Вы пытаетесь получить идентификаторы элементов с другими дочерними элементами, которые полностью покрывают их ... поэтому у вас нет идентификатора.

Вместо this.id попробуйте e.target.id. Если щелкнуть флэш-фильм, вы получите id = "flash".

http://jsfiddle.net/rzfPP/49/

Также вы нацелены не на тот элемент.

0 голосов
/ 28 июня 2010

В сгенерированном html добавить префикс вроде:

<div id="prefix_1" class="draggable" style="top:55px; left:55px; border: 2px solid black; display: inline-table; position: relative; background-color: grey; max-width: 500px;">
        <div>Im an Image Posted by:Teh_noob Posted on: 9/15/1991</div>

И в сценарии java добавьте тот же префикс

0 голосов
/ 01 апреля 2009

Хотя разрешено использовать точки и двоеточия, я бы не рекомендовал это.

Если вам когда-либо придется делать выборку на основе идентификатора, jQuery потерпит неудачу, потому что он подумает, что это новый селектор класса или фильтр.

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