div标题的客户端更改没有反映在C#代码后面

时间:2013-10-04 10:35:41

标签: c# javascript jquery asp.net css

我的div元素标题有问题。以下是我的div元素:

<div id="sampleDiv" runat="server" class="exStyle" onclick="return div_Click(this);" title="any"></div>

以下是我的javascript:

function div_Click(btn) {
    if (btn.title == "any") {
        btn.title = "on";
        btn.style.background = "url('sample1.png')";
    }
    else if (btn.title == "on") {
        btn.title = "off";
        btn.style.background = "url('sample2.png')";
    }
    else if (btn.title == "off") {
        btn.title = "any";
        btn.style.background = "url('sample3.png')";
    }
    return false;
}

并且在从客户端将标题更改为“on”或“off”之后,来自c#代码的Attributes["title"]的值仍为“any”!!任何帮助人员......

3 个答案:

答案 0 :(得分:2)

你想做什么?由于title属性,因此永远不会将其发回服务器。仅将输入元素发回服务器。因此,您无法获得更改的值。

要绕过此限制,您必须使用runat服务器标记添加hiddenfield。在发布之前将隐藏字段值更新为div标题,并使用hiddenfield恢复代码中的值。值。

希望这很清楚。

答案 1 :(得分:1)

试试这个,这会对你有帮助

$('#sampleDiv').click(function() {
    if ($(this).prop('title') == "any") {
        $(this).prop('title',"on");
        $(this).prop('background,url(sample1.png)');
    }
    else if ($(this).prop('title') == "on") {
         $(this).prop('title',"off");
        $(this).prop('background,url(sample2.png)');
    }
    else if ($(this).prop('title') == "off") {
         $(this).prop('title',"any");
        $(this).prop('background,url(sample3.png)');
    }
});

小提琴Here

答案 2 :(得分:1)

最好在这里使用switch语句。如果有匹配则会中断

 function div_Click(btn) {
     btn=$(btn);
     switch(btn.attr('title'))
        {
        case 'any':
          btn.attr('title','on');
          btn.css('background','url(sample1.png)');
          break;
        case 'on':
          btn.attr('title','off');
          btn.css('background','url(sample2.png)');
          break;
        case 'off':
          btn.attr('title','on');
          btn.css('background','url(sample3.png)');
          break;
        default:
          //default code if no match
        }
    }