Как изменить имя класса с помощью jquery? - PullRequest
2 голосов
/ 24 января 2012

Я пытаюсь изменить имя класса ASPxClientLabel из javascript. Как это сделать?

Я пробовал это:

Эта метка находится внутри элемента управления повторителем:

<dx:ASPxLabel ID="labelShortName" runat="server" CssClass="shortNameItemLink"
ClientSideEvents-Click="function(s, e){ ShortName_Clicked(s, e); }"
Text='<%#DataBinder.Eval(Container.DataItem, "ShortName")%>'>  
</dx:ASPxLabel> 

Этот ярлык начинается как "нажал"

<dx:ASPxLabel ID="labelShowAll" runat="server" 
ClientSideEvents-Click="function(s, e){ ShortName_Clicked(s, e); }" Text="Show All" 
CssClass="shortNameItemLinkClicked"></dx:ASPxLabel>

[JS]

<script type="text/javascript">
    function ShortName_Clicked(s, e) {
        var selectedText = s.GetText();
        var items = $('.shortNameItemLinkClicked');
        items.removeClass();
        items.addClass('shortNameItemLink');
        $(s).className = "shortNameItemLinkClicked";
 }
</script>

Я получаю "неопределенную" ошибку.

Есть идеи?

Ответы [ 6 ]

2 голосов
/ 24 января 2012

Попробуйте это.

function ShortName_Clicked(s, e) {
        var selectedText = s.GetText();
        $('.shortNameItemLinkClicked')
        .removeClass()
        .addClass('shortNameItemLink');
        $(s).attr('class', 'shortNameItemLinkClicked');
}
1 голос
/ 24 января 2012
$(s).className = "shortNameItemLinkClicked";

должно быть $(s).get(0).className = "shortNameItemLinkClicked";

или, если вы знаете существующее имя_класса

$(s).removeClass("shortNameItemLink").addClass("shortNameItemLinkClicked");
1 голос
/ 24 января 2012

Имена классов не совсем совпадают в вашем HTML и jQuery. Попробуйте это:

<script type="text/javascript">
    function ShortName_Clicked(s, e) {
        var selectedText = s.GetText();

        $('.shortNameItemLink').removeClass().addClass('shortNameItemLinkClicked');
    }
</script>

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

1 голос
/ 24 января 2012

Похоже, что вы делаете ваши добавления / удаления в обратном направлении.Попробуйте следующее

function ShortName_Clicked(s, e) {
  $('.shortNameItemLink').removeClass().addClass('shortNameItemLinkClicked');
}
1 голос
/ 24 января 2012

Вы пробовали

 $(s).attr("class","shortNameItemLinkClicked");

?

0 голосов
/ 24 января 2012

Извините, что выложил свой ответ, но никто из остальных, похоже, не сработал.

Я исправил это так:

<script type="text/javascript">
    function ShortName_Clicked(s, e) {
        var selectedText = s.GetText();
        $('.shortNameItemLinkClicked')
        .removeClass()
        .addClass('shortNameItemLink');

        $('#' + s.name)
        .removeClass("shortNameItemLink")
        .addClass("shortNameItemLinkClicked"); 
    }
</script>

из документации devexpress: ASPxClientLabel

спасибо @ShankarSangoli за объединение методов рефакторинга.

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