如何改善此Javascript代码中的关注点分离?

时间:2014-02-21 08:41:07

标签: javascript jquery html5

我在Classnames for styling, data attributes for behavior中建议使用html data attributes代替jquery class name selectors的代码。这段代码工作正常。但是,它引用了javascript文件中的html5数据属性。

实施例

$("[data-role='show-alert']").click(function () {
//and
textValue = $("[data-role='employee-name-text']").val();

问题

避免在javascript文件中引用html5数据属性的最佳方法是什么? (通过使用模型或什么?)

注意:我使用的是 Kendo UI 框架。

<head>
    <title>HTML 5 Test</title>

    <script type="text/javascript" src="lib/kendo/js/jquery.min.js"></script>
    <script type="text/javascript" src="lib/kendo/js/kendo.web.min.js"></script>

    <script type="text/javascript">

        //CONTROLLER File  
        var textValue = '';

        function getEmployeeBusinessFunction() {

            var currentEmployeeName = textValue;
            alert(currentEmployeeName);
        }

    </script>

    <script type="text/javascript">
        $(document).ready(function () {


            $("[data-role='show-alert']").click(function () {

                //textValue = $('.myPersonTextbox').val();
                textValue = $("[data-role='employee-name-text']").val();

                //Call Business Function
                getEmployeeBusinessFunction();

            });

        });

    </script>

</head>

车身

<body>
    <form>
    <input type="text" class='myPersonTextbox' name="personName" placeholder="Employee Name" data-role='employee-name-text' />
    <button type="button" class='myButton' data-role='show-alert'>
        Add</button>
    </form>
</body>

参考

  1. docs.telerik.com - How To Use Kendo UI Declarative Initialization
  2. docs.telerik.com - MVVM / Declarative Initialization And HTML5 Data Attributes
  3. classnames for styling, data attributes for behavior
  4. Don't use class names to find HTML elements with JS

1 个答案:

答案 0 :(得分:0)

即使它们是HTML5的一部分,也可以使用thouse属性 - 这就是它们的用途。特别是如果没有预期的冲突。

如果您仍想摆脱命名冲突,可以使用带有选择器的命名空间,例如

$('myns\\:[data-role='show-alert']') 
...
<myns:button type="button" class='myButton' data-role='show-alert'>

避免选择与您的代码无关的HTML5属性。