runat = "server" нарушает мою функциональность jquery / css - PullRequest
4 голосов
/ 24 мая 2011

У меня есть страница, которая меняет мультимедиа на странице, например изображения или PDF, используя JQuery, так что при каждом щелчке пользователя не требуется обновление страницы / доступ к новой базе данных.

У меня есть контейнер DIV, в котором хранится вся эта деятельность. Это работает и выглядит великолепно! Когда я добавляю runat = "server" в тег DIV, все мое хорошее поведение нарушается. Это без какого-либо кода, написанного для манипулирования объектной стороной сервера. По некоторым причинам мои стили / поведение не применяются правильно.

Я предполагаю, что есть что-то простое, но я устал догадываться. Я надеюсь, что кто-то здесь знает, почему это может происходить?

Редактировать: это для приложения ASP.Net.

  <div id="slidingContent" runat="server" >
    <div class="item" id="media3" name="media3">
       My media here.
    </div>
  </div>

Ответы [ 4 ]

8 голосов
/ 24 мая 2011

Я предполагаю, что вы имеете это в контексте приложения .net.Если это так, вы должны указать это где-то в вашем вопросе.runat="server" будет калечить id;просмотрите исходный код HTML в вашем браузере, чтобы увидеть, что именно он делает.Вам нужно добавить классы в вашу разметку и изменить CSS и JavaScript, чтобы использовать классы вместо идентификаторов.

7 голосов
/ 24 мая 2011

Как уже упоминали другие, если вы используете ASP.NET, он изменит ваш идентификатор, если у вас есть runat = "server". Чтобы обойти это, в вашем JS используйте:

document.getElementByID("<%=slidingContent.ClientID%>");

или

$("#<%=slidingContent.ClientID%>");
2 голосов
/ 24 мая 2011

сделать просмотр источника на отображаемой странице.Id = "slipContent", вероятно, был изменен asp.net.

0 голосов
/ 24 мая 2011

Я не знаю, используете ли вы главные страницы / страницы с контентом, но если это так, то, как я обнаружил, работает то, что вы присваиваете вашим страницам основные / материалы ID.

Если вы просто используете один из них и предполагаете, что на главной странице указан идентификатор "Mstr", а на странице содержимого - идентификатор "Cont", вы можете создать префиксы JavaScript, например, так:

var masterPrefix = "Mstr_",
    contentPrefix = "Cont_";

Затем вы можете создать функцию с именем $getElement(), которая позволит вам передавать идентификатор, который вы даете в разметке, следующим образом:

function $getElement(id) {
    return $("#" + masterPrefix + contentPrefix + id);
}

Затем, учитывая ваш конкретный пример, вы можете получить объект jQuery в свой div runat = "server", выполнив следующее:

var $slidingContent = $getElement("slidingContent");

Я обнаружил, что этот метод спасает жизнь, когда вы входите в большие проекты, в которых используются тяжелые сценарии на стороне клиента.

Или, если вам не нравится вызывать другую функцию для возврата вашего объекта, вы всегда можете сделать это:

var $slidingContent = $('div[id$="slidingContent"]');

Здесь вы просто говорите, дайте мне div, у которого есть идентификатор, заканчивающийся на "slideContent".

...