Rumah hujung hadapan web tutorial js Penjelasan terperinci tentang pemalam garis masa jQuery usage_jquery

Penjelasan terperinci tentang pemalam garis masa jQuery usage_jquery

May 16, 2016 pm 03:50 PM
jquery garis masa

这个时间轴是工作上用到的,自己写了一个, qq空间有时间轴的控件, 百度文库也有时间轴的控件;

  百度的时间轴大概是这样的:

  用户点击对应的锚链接,  那个三角会滚动, 然后左侧的界面也会滚动;

  实际的效果如下图,用户点击左侧的按钮或者右侧的input,滚动条都会主动滚动, 这里有个小技巧就是用after和before伪类生成三角形, 用户点击按钮的滚动效果直接用jq的animate方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315

316

317

318

319

320

321

322

323

324

325

326

327

328

329

330

331

332

333

334

335

336

337

338

339

340

341

342

343

344

345

346

347

348

349

350

351

352

353

354

355

356

357

358

359

360

361

<!--

//设置内容;

window.onWebMessage( '{"type":"setItems","data":{"items":[{"name":1111},{"name":2222}]}}' ) ;

 

//设置内容, 对应的item对象如果active为true为激活态;

window.onWebMessage( '{"type":"setItems","data":{"items":[{"name":1000},{"name":1111},{"name":2222},{"name":3333,"active":true}]}}' ) ;

 

//设置某个第n个位置的item;

window.onWebMessage('{"type":"setItem","data":[2,{ "name" : "add-item"}]}');

 

//激活第三个锚链接为选中态;

window.onWebMessage( '{"type":"active","data":2}' )

 

//获取目前的数据:

window.onWebMessage( '{"type":"getItem"}' );

-->

 

<html>

  <head>

    <meta charset="utf-8" />

    <script src="http://cdn.bootcss.com/jquery/2.1.4/jquery.js"></script>

  </head>

  <style>

    /*初始的reset样式*/

    *{

      margin:0;

      padding:0;

    }

    .time-line-wrap{

      position: relative;

      width: 400px;

      margin:0 auto;

    }

    ul{

      list-style: none;

    }

    body,html{

      height: 100%;

    }

    body{

      -webkit-user-select: none;

      -moz-user-select: none;

      -ms-user-select: none;

      user-select: none;

    }

 

 

    /*样式开始*/

    .scroll-time-line{

      height:100%;

      overflow: hidden;

    }

    .time-line-wrap{

      position: relative;

    }

    .time-line-ul{

      position: relative;

    }

    /**

    时间轴的轴用伪类实现;

    */

    .time-line-ul::before{

      display: block;

      position:absolute;

      content:"";

      height:100%;

      width:1;

      left:27px;

      top:0;

      background: #eee;

    }

    .time-line-ul li{

      padding:14px;

      position: relative;

    }

    .time-line-ul input {

      vertical-align: super;

      border-radius: 4px;

      border:1px solid #eee;

      padding:4px;

      line-height: 22px;

      margin-left:10px;

    }

    /**

    使用after和before伪类实现input前面的三角形;

    */

    .time-line-ul li::before{

      position: absolute;

      content: "";

      display: block;

      top: 21px;

      left: 40px;

      width: 0px;

      height: 0px;

      border: 10px solid rgba(0, 0, 0, 0);

      border-right: 10px solid #EEE;

    }

    .time-line-ul li::after{

      position: absolute;

      content: "";

      display: block;

      top: 21px;

      left: 41px;

      width: 0px;

      height: 0px;

      border: 10px solid rgba(0, 0, 0, 0);

      border-right: 10px solid #fff;

    }

    /**

    默认时间轴锚链接的样式

    */

    .time-line-icon{

      width: 26px;

      height: 28px;

      display: inline-block;

      background: url(http://images0.cnblogs.com/blog2015/497865/201507/131424386411828.png);

    }

    /**

    鼠标移动上来,或者锚链接有active时候的背景图样式

    */

    .time-line-icon.active,.time-line-icon:hover{

      background-position: 0px 28px;

    }

  </style>

 

  <!--模板,勿删!-->

  <script type="text/tempate" id="li-tpl">

    <% for(var i=0; i<items.length; i++ ) {%>

      <li class="li-<%=i%>">

        <a href="###" class="time-line-icon <% if(items[i].active){ %> <%="active"%> <%}%> "></a>

        <input type="text" value="<%=items[i].name%>"/>

      </li>

    <% } %>

  </script>

 

  <body>

    <!--

    滚动出现在这个div里面

    -->

    <div class="scroll-time-line">

 

      <!---

      时间轴相关的html结构

      -->

      <div class="time-line-wrap">

        <ul class="time-line-ul">

          <li>

            <a href="###" class="time-line-icon"></a> <input type="text" value="2015"/>

          </li>

          <li>

            <a href="###" class="time-line-icon"></a> <input type="text" value="2015"/>

          </li>

          <li>

            <a href="###" class="time-line-icon"></a> <input type="text" value="2015"/>

          </li>

          <li>

            <a href="###" class="time-line-icon"></a> <input type="text" value="2015"/>

          </li>

          <li>

            <a href="###" class="time-line-icon"></a> <input type="text" value="2015"/>

          </li>

          <li>

            <a href="###" class="time-line-icon"></a> <input type="text" value="2015"/>

          </li>

          <li>

            <a href="###" class="time-line-icon"></a> <input type="text" value="2015"/>

          </li>

          <li>

            <a href="###" class="time-line-icon"></a> <input type="text" value="2015"/>

          </li>

          <li>

            <a href="###" class="time-line-icon"></a> <input type="text" value="2015"/>

          </li>

          <li>

            <a href="###" class="time-line-icon"></a> <input type="text" value="2015"/>

          </li>

          <li>

            <a href="###" class="time-line-icon"></a> <input type="text" value="2015"/>

          </li>

          <li>

            <a href="###" class="time-line-icon"></a> <input type="text" value="2015"/>

          </li>

          <li>

            <a href="###" class="time-line-icon"></a> <input type="text" value="2015"/>

          </li>

          <li>

            <a href="###" class="time-line-icon"></a> <input type="text" value="2015"/>

          </li>

          <li>

            <a href="###" class="time-line-icon"></a> <input type="text" value="2015"/>

          </li>

          <li>

            <a href="###" class="time-line-icon"></a> <input type="text" value="2015"/>

          <li>

            <a href="###" class="time-line-icon"></a> <input type="text" value="2015"/>

          </li>

          <li>

            <a href="###" class="time-line-icon"></a> <input type="text" value="2015"/>

          </li>

          <li>

            <a href="###" class="time-line-icon"></a> <input type="text" value="2015"/>

          </li>

          <li>

            <a href="###" class="time-line-icon"></a> <input type="text" value="2015"/>

          </li>

          <li>

            <a href="###" class="time-line-icon"></a> <input type="text" value="2015"/>

          </li>

        </ul>

      </div>

      <!---

      时间轴相关的html结构结束

      -->

    </div>

    <script>

      //模板引擎的代码

      (function () {

        //underscore抄的模板引擎;

        var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g;

 

        var escapes = {

          "'":   "'",

          '\\':   '\\',

          '\r':   'r',

          '\n':   'n',

          '\t':   't',

          '\u2028': 'u2028',

          '\u2029': 'u2029'

        };

 

        $.templateSettings = {

          evaluate  : /<%([\s\S]+&#63;)%>/g,

          interpolate : /<%=([\s\S]+&#63;)%>/g,

          escape   : /<%-([\s\S]+&#63;)%>/g

        }

        $.template = function(text, data, settings) {

          var render;

          settings = $.extend({}, settings, $.templateSettings);

 

          // Combine delimiters into one regular expression via alternation.

          var matcher = new RegExp([

            (settings.escape || noMatch).source,

            (settings.interpolate || noMatch).source,

            (settings.evaluate || noMatch).source

          ].join('|') + '|$', 'g');

 

          // Compile the template source, escaping string literals appropriately.

          var index = 0;

          var source = "__p+='";

          text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {

            source += text.slice(index, offset)

                .replace(escaper, function(match) { return '\\' + escapes[match]; });

 

            if (escape) {

              source += "'+\n((__t=(" + escape + "))==null&#63;'':_.escape(__t))+\n'";

            }

            if (interpolate) {

              source += "'+\n((__t=(" + interpolate + "))==null&#63;'':__t)+\n'";

            }

            if (evaluate) {

              source += "';\n" + evaluate + "\n__p+='";

            }

            index = offset + match.length;

            return match;

          });

          source += "';\n";

 

          // If a variable is not specified, place data values in local scope.

          if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';

 

          source = "var __t,__p='',__j=Array.prototype.join," +

              "print=function(){__p+=__j.call(arguments,'');};\n" +

              source + "return __p;\n";

 

          try {

            render = new Function(settings.variable || 'obj', '_', source);

          } catch (e) {

            e.source = source;

            throw e;

          }

 

          if (data) return render(data, _);

          var template = function(data) {

            return render.call(this, data);

          };

 

          // Provide the compiled function source as a convenience for precompilation.

          template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}';

 

          return template;

        };

      })();

 

      (function( fn ) {

 

        $( fn.call( $ ,$) );

 

      })(function ($) {

 

        $.timeLineSetting = {

          offsetTop : 100

        };

        $.extend($.fn, {

          timeLine : function() {

            $.each(this, function() {

 

              var _this = this;

 

              $(this).delegate(".time-line-ul>li", "click", function( ev ) {

 

                $(".time-line-icon.active").removeClass("active");

 

                $(this).find(".time-line-icon").addClass("active");

 

                $(_this).animate({scrollTop: this.offsetTop - $.timeLineSetting.offsetTop},300);

 

                ev.preventDefault();

 

              });

            });

          }

        });

      });

      $(function() {

        var compile= $.template( $("#li-tpl").html() || "");

 

        //与客户端的交互事件;

        var orginalData = {};

        window.onWebMessage = function( msg ) {

          msg = JSON.parse(msg);

          switch( msg.type ) {

            case "setItems" :

              $(".time-line-ul").html( compile(msg.data) );

              //结构化复制;

              orginalData = JSON.parse(JSON.stringify(msg.data));

              break;

 

            case "setItem" :

              orginalData.items&&orginalData.items.splice(msg.data[0],0,msg.data[1]);

              $(".time-line-ul").html( compile(orginalData) );

              break;

 

            case "getItem" :

                alert(JSON.stringify( orginalData ));

              break;

 

            case "active" :

              $(".time-line-icon.active").removeClass("active");

              $(".time-line-ul>li").eq( msg.data).find(".time-line-icon").addClass("active")

              break;

 

          };

 

        };

 

        //启用插件;

        $(".scroll-time-line").timeLine();

      })

    </script>

  </body>

</html>

Salin selepas log masuk

  模板用了underscore,tempate方法挂到了$下, 作为$的工具方法(依赖于jQuery),模板的js代码直接放这里方便一些小项目直接用:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

//模板引擎的代码

(function () {

  //underscore抄的模板引擎;

  var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g;

 

  var escapes = {

    "'":   "'",

    '\\':   '\\',

    '\r':   'r',

    '\n':   'n',

    '\t':   't',

    '\u2028': 'u2028',

    '\u2029': 'u2029'

  };

 

  $.templateSettings = {

    evaluate  : /<%([\s\S]+&#63;)%>/g,

    interpolate : /<%=([\s\S]+&#63;)%>/g,

    escape   : /<%-([\s\S]+&#63;)%>/g

  }

  $.template = function(text, data, settings) {

    var render;

    settings = $.extend({}, settings, $.templateSettings);

 

    // Combine delimiters into one regular expression via alternation.

    var matcher = new RegExp([

      (settings.escape || noMatch).source,

      (settings.interpolate || noMatch).source,

      (settings.evaluate || noMatch).source

    ].join('|') + '|$', 'g');

 

    // Compile the template source, escaping string literals appropriately.

    var index = 0;

    var source = "__p+='";

    text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {

      source += text.slice(index, offset)

          .replace(escaper, function(match) { return '\\' + escapes[match]; });

 

      if (escape) {

        source += "'+\n((__t=(" + escape + "))==null&#63;'':_.escape(__t))+\n'";

      }

      if (interpolate) {

        source += "'+\n((__t=(" + interpolate + "))==null&#63;'':__t)+\n'";

      }

      if (evaluate) {

        source += "';\n" + evaluate + "\n__p+='";

      }

      index = offset + match.length;

      return match;

    });

    source += "';\n";

 

    // If a variable is not specified, place data values in local scope.

    if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';

 

    source = "var __t,__p='',__j=Array.prototype.join," +

        "print=function(){__p+=__j.call(arguments,'');};\n" +

        source + "return __p;\n";

 

    try {

      render = new Function(settings.variable || 'obj', '_', source);

    } catch (e) {

      e.source = source;

      throw e;

    }

 

    if (data) return render(data, _);

    var template = function(data) {

      return render.call(this, data);

    };

 

    // Provide the compiled function source as a convenience for precompilation.

    template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}';

 

    return template;

  };

})();

Salin selepas log masuk

  模板的使用的DEMO如下, 也可以参考官方的文档:http://underscorejs.org/#template

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

<html>

  <head>

    <body>

      <script src="http://cdn.bootcss.com/jquery/2.1.4/jquery.js"></script>

      <script>

      //模板引擎的代码

      (function () {

        //underscore抄的模板引擎;

        var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g;

 

        var escapes = {

          "'":   "'",

          '\\':   '\\',

          '\r':   'r',

          '\n':   'n',

          '\t':   't',

          '\u2028': 'u2028',

          '\u2029': 'u2029'

        };

 

        $.templateSettings = {

          evaluate  : /<%([\s\S]+&#63;)%>/g,

          interpolate : /<%=([\s\S]+&#63;)%>/g,

          escape   : /<%-([\s\S]+&#63;)%>/g

        }

        $.template = function(text, data, settings) {

          var render;

          settings = $.extend({}, settings, $.templateSettings);

 

          // Combine delimiters into one regular expression via alternation.

          var matcher = new RegExp([

            (settings.escape || noMatch).source,

            (settings.interpolate || noMatch).source,

            (settings.evaluate || noMatch).source

          ].join('|') + '|$', 'g');

 

          // Compile the template source, escaping string literals appropriately.

          var index = 0;

          var source = "__p+='";

          text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {

            source += text.slice(index, offset)

                .replace(escaper, function(match) { return '\\' + escapes[match]; });

 

            if (escape) {

              source += "'+\n((__t=(" + escape + "))==null&#63;'':_.escape(__t))+\n'";

            }

            if (interpolate) {

              source += "'+\n((__t=(" + interpolate + "))==null&#63;'':__t)+\n'";

            }

            if (evaluate) {

              source += "';\n" + evaluate + "\n__p+='";

            }

            index = offset + match.length;

            return match;

          });

          source += "';\n";

 

          // If a variable is not specified, place data values in local scope.

          if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';

 

          source = "var __t,__p='',__j=Array.prototype.join," +

              "print=function(){__p+=__j.call(arguments,'');};\n" +

              source + "return __p;\n";

 

          try {

            render = new Function(settings.variable || 'obj', '_', source);

          } catch (e) {

            e.source = source;

            throw e;

          }

 

          if (data) return render(data, _);

          var template = function(data) {

            return render.call(this, data);

          };

 

          // Provide the compiled function source as a convenience for precompilation.

          template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}';

 

          return template;

        };

      })();

      </script>

      <script>

      //会输出 <div>haahah</div>;

      console.log( $.template('<div><%=data%></div>')( {data:"haahah"} ) );

      </script>

    </body>

  </head>

</html>

Salin selepas log masuk

  修改了时间轴的样式, 又为这个插件添加了拖拽的方法,代码一下变得好乱, 顺便普及一下拖拽的事件, ondrop, ondragover,ondrag, 如果要让元素可以拖拽, 就要为要拖拽的元素添加draggable="true", 元素可以拖拽以后 , 要为可以拖放到的的DIV或者其他块元素,绑定一个dragover方法, 这个方法就做一件事, ev.preventDefault(), 看代码撒:

运行下面代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

<!DOCTYPE HTML>

<html>

<head>

  <meta charset="utf-8"/>

  <style type="text/css">

    #div1 {width:488px;height:70px;padding:10px;border:1px solid #aaaaaa;}

  </style>

  <script type="text/javascript">

    //当元素dragover时候一定要阻止默认事件, 否则把当前拖拽的元素就无法drop;

    function dragover(ev)

    {

      console.log(ev);

      ev.preventDefault();

    }

 

    //对于拖拽事件最重要的一个事件属性就是dataTransfer;

    function drag(ev)

    {

      console.log(ev);

      ev.dataTransfer.setData("Text",ev.target.id);

    }

 

    function drop(ev)

    {

      console.log(ev);

      var data=ev.dataTransfer.getData("Text");

      ev.target.appendChild(document.getElementById(data));

    }

  </script>

</head>

<body>

 

<p>请把图片拖放到矩形中:</p>

 

<div id="div1" ondrop="drop(event)" ondragover="dragover(event)"></div>

<br />

<img id="drag1" src="http://images0.cnblogs.com/news/24442/201507/081152502219706.gif" draggable="true" ondragstart="drag(event)" />

 

</body>

</html>

 

  另外一个DEMO:

 

运行下面代码

 

<!DOCTYPE HTML>

<html>

<head>

  <meta charset="utf-8"/>

  <style type="text/css">

  </style>

</head>

<body>

  <p>What fruits do you like&#63;</p>

  <ol ondragstart="dragStartHandler(event)">

    <li draggable="true" data-value="fruit-apple">Apples</li>

    <li draggable="true" data-value="fruit-orange">Oranges</li>

    <li draggable="true" data-value="fruit-pear">Pears</li>

  </ol>

  <script>

    var internalDNDType = 'text/x-example'; // set this to something specific to your site

    function dragStartHandler(event) {

      if (event.target instanceof HTMLLIElement) {

        // use the element's data-value="" attribute as the value to be moving:

        event.dataTransfer.setData(internalDNDType, event.target.dataset.value);

        event.dataTransfer.effectAllowed = 'move'; // only allow moves

      } else {

        event.preventDefault(); // don't allow selection to be dragged

      }

    }

  </script>

 

  <p>Drop your favorite fruits below:</p>

  <ol ondrop="dropHandler(event)" ondragover="dragover(event)">

    <!-- don't forget to change the "text/x-example" type to something

    specific to your site -->

    <li>drop</li>

  </ol>

  <script>

    var internalDNDType = 'text/x-example'; // set this to something specific to your site

    function dropHandler(event) {

      var li = document.createElement('li');

      var data = event.dataTransfer.getData(internalDNDType);

      if (data == 'fruit-apple') {

        li.textContent = 'Apples';

      } else if (data == 'fruit-orange') {

        li.textContent = 'Oranges';

      } else if (data == 'fruit-pear') {

        li.textContent = 'Pears';

      } else {

        li.textContent = 'Unknown Fruit';

      }

      event.target.appendChild(li);

    };

    function dragover(ev) {

      ev.preventDefault();

    };

  </script>

</body>

</html>

Salin selepas log masuk

  HTML5的拖拽提供了 setDragImage , effectAllowed , setData.... 等很多便捷的方法给开发者, 通过FileReader读取File, 然后就可以用ajax与后台进行交互, 和前端DOM操作:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

<!DOCTYPE HTML>

<html>

<head>

  <meta charset="utf-8"/>

  <style type="text/css">

  </style>

</head>

<body>

  <div id="div0" ondragover="dragover(event)" ondrop="drop(event)">

    drop拖放文件进来

  </div>

  <script>

    function dragover(ev) {

      ev.preventDefault();

    };

    function drop(ev) {

      var reader = new FileReader();

      reader.onload = function ( ev ) {

        var oDiv = document.createElement("div");

        oDiv.innerHTML = ev.target.result;

        document.body.appendChild( oDiv );

      };

      reader.readAsText( ev.dataTransfer.files[0] );

      ev.preventDefault();

    }

  </script>

</body>

</html>

Salin selepas log masuk

  插件效果图:

  最后完成的插件代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315

316

317

318

319

320

321

322

323

324

325

326

327

328

329

330

331

332

333

334

335

336

337

338

339

340

341

342

343

344

345

346

347

348

349

350

351

352

353

354

355

356

357

358

359

360

361

362

363

364

365

366

367

368

369

370

371

372

373

374

375

376

377

378

379

380

381

382

383

384

385

386

387

388

389

390

391

392

393

394

395

396

397

398

399

400

401

402

403

404

405

406

407

408

409

410

411

412

413

414

415

416

417

418

419

420

421

422

423

424

425

426

427

428

429

430

431

432

433

434

435

436

437

438

439

440

441

442

443

444

445

446

447

448

449

450

451

452

453

454

455

456

457

458

459

460

461

462

463

464

465

466

467

468

469

470

471

472

473

474

475

476

477

478

479

480

481

482

483

484

485

486

487

488

489

490

491

492

493

494

495

496

497

498

499

500

501

502

503

504

505

506

507

508

509

510

511

512

513

514

515

516

517

518

519

520

521

522

523

524

525

526

527

528

529

530

531

532

533

534

535

536

537

538

539

540

541

542

543

544

545

546

547

548

549

550

551

552

553

554

555

556

557

558

559

560

561

562

563

564

565

566

567

568

569

570

571

572

573

574

575

576

577

578

579

580

581

582

583

584

585

586

587

588

589

590

591

592

593

594

595

596

597

598

599

600

601

602

603

604

605

606

607

608

609

610

611

612

613

614

615

616

617

618

619

620

621

622

623

624

625

626

627

628

629

630

631

632

633

634

635

636

637

638

639

640

641

642

643

644

645

646

647

648

649

650

651

652

653

654

655

656

657

658

659

660

661

662

663

664

665

666

667

668

669

670

671

672

673

674

675

676

677

678

679

680

681

682

683

684

685

686

687

688

<!--

//设置内容;

window.onWebMessage( '{"type":"setItems","data":{"items":[{"name":1111,"type":"doc"},{"name":2222,"type":"doc"}]}}' ) ;

 

window.onWebMessage( '{"type":"setItems","data":{"items":[{"name":"文档类型","type":"doc"},{"name":"音频类型","type":"audio","active":true},{"name":"视频类型","type":"video"},{"name":"单元测试","type":"test"},{"name":"图片类型","type":"pic"}]}}' ) ;

 

//设置内容, 对应的item对象如果active为true为激活态;

window.onWebMessage( '{"type":"setItems","data":{"items":[{"name":1111,"type":"doc"},{"name":2222,"type":"doc","active":true}]}}' ) ;

 

//设置某个第n个位置的item;

window.onWebMessage('{"type":"setItem","data":[2,{ "name" : "add-item", "type":"doc"}]}');

 

//激活第三个锚链接为选中态;

window.onWebMessage( '{"type":"active","data":2}' )

 

//获取目前的数据:

window.onWebMessage( '{"type":"getItem"}' )

-->

 

 

   

    <meta charset="utf-8">

    <script src="https://cdn.bootcss.com/jquery/2.1.4/jquery.js"></script>

   

  <style>

    /*初始的reset样式*/

    *{

      margin:0;

      padding:0;

    }

    .time-line-wrap{

      position: relative;

      width: 400px;

      margin:0 auto;

    }

    ul{

      list-style: none;

    }

    body,html{

      height: 100%;

    }

    body{

      background:#303030;

      -webkit-user-select: none;

      -moz-user-select: none;

      -ms-user-select: none;

      user-select: none;

    }

 

 

    /*样式开始*/

    .scroll-time-line{

      height:100%;

      overflow: hidden;

    }

    .time-line-wrap{

      position: relative;

    }

    .time-line-wrap::before{

      display: block;

      content: "";

      position: absolute;

      border: 2px solid #616161;

      width: 7px;

      background: #303030;

      height: 7px;

      z-index: 2;

      border-radius: 100%;

      left: 12px;

      top: 0;

    }

    .time-line-wrap::after{

      display: block;

      content: "";

      position: absolute;

      border: 2px solid #616161;

      width: 7px;

      background: #303030;

      height: 7px;

      z-index: 2;

      border-radius: 100%;

      left: 12px;

      bottom:0;

    }

    .time-line-ul{

      position: relative;

    }

    /**

    时间轴的轴用伪类实现;

    */

    .time-line-ul::before{

      display: block;

      position:absolute;

      content:"";

      height:100%;

      width:1px;

      left:17px;

      top:0;

      background: #616161;

    }

 

    .time-line-ul li{

      padding: 14px;

      position: relative;

      color: #FFF;

      height: 26px;

    }

    .time-line-ul li>* {

      vertical-align: middle;

      display: inline-block;

    }

 

    /**

    为了更好的维护hover的样式, 背景图片通过js进行管理

    hover start;

    */

    .time-line-ul li b{

      width: 32px;

      height: 32px;

    }

    .time-line-ul li b.active{

      display: none;

    }

    .time-line-ul li:hover b{

      display: none;

    }

    .time-line-ul li:hover .active{

      display: inline-block;

    }

    /**

      当li被点击的时候添加的类,优先级

    */

    .time-line-ul li b.show{

      display: none;

    }

    .time-line-ul li b.active.show{

      display: inline-block;

    }

    /**

    hover end

    */

 

    .time-line-ul li span{

      display: inline-block;

      white-space: nowrap;

      word-wrap: normal;

      width: 100px;

      text-overflow: ellipsis;

      overflow: hidden;

    }

    /**

    当拖拽LI到某个LI上面,这个LI变透明

    */

    .over{

      opacity: 0.4;

    }

    /**

    占位DIV;

    */

    .blank{

      display: block;

      height:50px;

      line-height: 50px;

    }

 

    /**

    默认时间轴锚链接的样式

    */

    .time-line-icon{

      width: 7px;

      height: 7px;

      display: inline-block;

      background: #616161;

      border-radius: 100%;

    }

    /**

    鼠标移动上来,或者锚链接有active时候的背景图样式

    */

    .time-line-icon.active,.time-line-icon:hover{

      background: #fff;

    }

  </style>

 

  <!--模板,勿删!-->

  <script type="text/tempate" id="li-tpl">

    <% for(var i=0; i<items.length; i++ ) {%>

      <li class="li-<%=i%>" draggable="true">

        <a href="###" class="time-line-icon <% if(items[i].active){ %> <%="active"%> <%}%> "></a>

        <b class="">

          <img src="imgs/<%=items[i].type%>.png" />

        </b>

        <b class="active">

          <img src="imgs/<%=items[i].type%>1.png" />

        </b>

        <span>

          <%=items[i].name%>

        </span>

      </li>

    <% } %>

  </script>

 

   

    <!--

    滚动出现在这个div里面

    -->

    <div class="scroll-time-line">

 

      <!---

      时间轴相关的html结构

      -->

      <div class="time-line-wrap">

        <ul class="time-line-ul">

 

          <!----假数据--->

          <li class="li-0" draggable="true">

            <a href="###" class="time-line-icon "></a>

            <b class="">

              <img src="imgs/doc.png">

            </b>

            <b class="active">

              <img src="imgs/doc1.png">

            </b>

            <span>

              文档类型

            </span>

          </li>

 

          <li class="li-2" draggable="true">

            <a href="###" class="time-line-icon "></a>

            <b class="">

              <img src="imgs/video.png">

            </b>

            <b class="active">

              <img src="imgs/video1.png">

            </b>

            <span>

              视频类型

            </span>

          </li>

 

 

          <li class="li-3" draggable="true">

            <a href="###" class="time-line-icon "></a>

            <b class="">

              <img src="imgs/test.png">

            </b>

            <b class="active">

              <img src="imgs/test1.png">

            </b>

            <span>

              单元测试

            </span>

          </li><li class="li-1" draggable="true">

          <a href="###" class="time-line-icon active "></a>

          <b class="">

            <img src="imgs/audio.png">

          </b>

          <b class="active">

            <img src="imgs/audio1.png">

          </b>

          <span>

            音频类型

          </span>

        </li>

 

          <li class="li-4" draggable="true">

            <a href="###" class="time-line-icon "></a>

            <b class="">

              <img src="imgs/pic.png">

            </b>

            <b class="active">

              <img src="imgs/pic1.png">

            </b>

          <span>

            图片类型

          </span>

          </li>

 

          <li class="li-0" draggable="true">

            <a href="###" class="time-line-icon "></a>

            <b class="">

              <img src="imgs/doc.png">

            </b>

            <b class="active">

              <img src="imgs/doc1.png">

            </b>

            <span>

              文档类型

            </span>

          </li>

 

          <li class="li-2" draggable="true">

            <a href="###" class="time-line-icon "></a>

            <b class="">

              <img src="imgs/video.png">

            </b>

            <b class="active">

              <img src="imgs/video1.png">

            </b>

            <span>

              视频类型

            </span>

          </li>

 

 

          <li class="li-3" draggable="true">

            <a href="###" class="time-line-icon "></a>

            <b class="">

              <img src="imgs/test.png">

            </b>

            <b class="active">

              <img src="imgs/test1.png">

            </b>

            <span>

              单元测试

            </span>

          </li><li class="li-1" draggable="true">

          <a href="###" class="time-line-icon active "></a>

          <b class="">

            <img src="imgs/audio.png">

          </b>

          <b class="active">

            <img src="imgs/audio1.png">

          </b>

          <span>

            音频类型

          </span>

        </li>

 

          <li class="li-4" draggable="true">

            <a href="###" class="time-line-icon "></a>

            <b class="">

              <img src="imgs/pic.png">

            </b>

            <b class="active">

              <img src="imgs/pic1.png">

            </b>

            <span>

              图片类型

            </span>

          </li>

 

          <li class="li-0" draggable="true">

            <a href="###" class="time-line-icon "></a>

            <b class="">

              <img src="imgs/doc.png">

            </b>

            <b class="active">

              <img src="imgs/doc1.png">

            </b>

            <span>

              文档类型

            </span>

          </li>

 

          <li class="li-2" draggable="true">

            <a href="###" class="time-line-icon "></a>

            <b class="">

              <img src="imgs/video.png">

            </b>

            <b class="active">

              <img src="imgs/video1.png">

            </b>

            <span>

              视频类型

            </span>

          </li>

 

 

          <li class="li-3" draggable="true">

            <a href="###" class="time-line-icon "></a>

            <b class="">

              <img src="imgs/test.png">

            </b>

            <b class="active">

              <img src="imgs/test1.png">

            </b>

            <span>

              单元测试

            </span>

          </li><li class="li-1" draggable="true">

          <a href="###" class="time-line-icon active "></a>

          <b class="">

            <img src="imgs/audio.png">

          </b>

          <b class="active">

            <img src="imgs/audio1.png">

          </b>

          <span>

            音频类型

          </span>

        </li>

 

          <li class="li-4" draggable="true">

            <a href="###" class="time-line-icon "></a>

            <b class="">

              <img src="imgs/pic.png">

            </b>

            <b class="active">

              <img src="imgs/pic1.png">

            </b>

            <span>

              图片类型

            </span>

          </li>

 

          <li class="li-0" draggable="true">

            <a href="###" class="time-line-icon "></a>

            <b class="">

              <img src="imgs/doc.png">

            </b>

            <b class="active">

              <img src="imgs/doc1.png">

            </b>

            <span>

              文档类型

            </span>

          </li>

 

          <li class="li-2" draggable="true">

            <a href="###" class="time-line-icon "></a>

            <b class="">

              <img src="imgs/video.png">

            </b>

            <b class="active">

              <img src="imgs/video1.png">

            </b>

            <span>

              视频类型

            </span>

          </li>

 

 

          <li class="li-3" draggable="true">

            <a href="###" class="time-line-icon "></a>

            <b class="">

              <img src="imgs/test.png">

            </b>

            <b class="active">

              <img src="imgs/test1.png">

            </b>

            <span>

              单元测试

            </span>

          </li><li class="li-1" draggable="true">

            <a href="###" class="time-line-icon active "></a>

            <b class="">

              <img src="imgs/audio.png">

            </b>

            <b class="active">

              <img src="imgs/audio1.png">

            </b>

            <span>

              音频类型

            </span>

          </li>

 

          <li class="li-4" draggable="true">

            <a href="###" class="time-line-icon "></a>

            <b class="">

              <img src="imgs/pic.png">

            </b>

            <b class="active">

              <img src="imgs/pic1.png">

            </b>

            <span>

              图片类型

            </span>

          </li>

 

          <li class="li-0" draggable="true">

            <a href="###" class="time-line-icon "></a>

            <b class="">

              <img src="imgs/doc.png">

            </b>

            <b class="active">

              <img src="imgs/doc1.png">

            </b>

            <span>

              文档类型

            </span>

          </li>

 

          <li class="li-2" draggable="true">

            <a href="###" class="time-line-icon "></a>

            <b class="">

              <img src="imgs/video.png">

            </b>

            <b class="active">

              <img src="imgs/video1.png">

            </b>

            <span>

              视频类型

            </span>

          </li>

 

 

          <!---假数据end--->

 

        </ul>

      </div>

      <!---

      时间轴相关的html结构结束

      -->

    </div>

    <script>

      //模板引擎的代码

      (function () {

        //underscore抄的模板引擎;

        var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g;

 

        var escapes = {

          &quot;'&quot;:   &quot;'&quot;,

          '\\':   '\\',

          '\r':   'r',

          '\n':   'n',

          '\t':   't',

          '\u2028': 'u2028',

          '\u2029': 'u2029'

        };

 

        $.templateSettings = {

          evaluate  : /&lt;%([\s\S]+&amp;#63;)%&gt;/g,

          interpolate : /&lt;%=([\s\S]+&amp;#63;)%&gt;/g,

          escape   : /&lt;%-([\s\S]+&amp;#63;)%&gt;/g

        }

        $.template = function(text, data, settings) {

          var render;

          settings = $.extend({}, settings, $.templateSettings);

 

          // Combine delimiters into one regular expression via alternation.

          var matcher = new RegExp([

            (settings.escape || noMatch).source,

            (settings.interpolate || noMatch).source,

            (settings.evaluate || noMatch).source

          ].join('|') + '|$', 'g');

 

          // Compile the template source, escaping string literals appropriately.

          var index = 0;

          var source = &quot;__p+='&quot;;

          text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {

            source += text.slice(index, offset)

                .replace(escaper, function(match) { return '\\' + escapes[match]; });

 

            if (escape) {

              source += &quot;'+\n((__t=(&quot; + escape + &quot;))==null&amp;#63;'':_.escape(__t))+\n'&quot;;

            }

            if (interpolate) {

              source += &quot;'+\n((__t=(&quot; + interpolate + &quot;))==null&amp;#63;'':__t)+\n'&quot;;

            }

            if (evaluate) {

              source += &quot;';\n&quot; + evaluate + &quot;\n__p+='&quot;;

            }

            index = offset + match.length;

            return match;

          });

          source += &quot;';\n&quot;;

 

          // If a variable is not specified, place data values in local scope.

          if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';

 

          source = &quot;var __t,__p='',__j=Array.prototype.join,&quot; +

              &quot;print=function(){__p+=__j.call(arguments,'');};\n&quot; +

              source + &quot;return __p;\n&quot;;

 

          try {

            render = new Function(settings.variable || 'obj', '_', source);

          } catch (e) {

            e.source = source;

            throw e;

          }

 

          if (data) return render(data, _);

          var template = function(data) {

            return render.call(this, data);

          };

 

          // Provide the compiled function source as a convenience for precompilation.

          template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}';

 

          return template;

        };

      })();

 

      (function( fn ) {

 

        $( fn.call( $ ,$) );

 

      })(function ($) {

 

        $.timeLineSetting = {

          offsetTop : 100

        };

 

        $.extend($.fn, {

          timeLine : function() {

            $.each(this, function() {

 

              var _this = this,

                  eleDrag;

              $(this).delegate(".time-line-ul>li", "click", function( ev ) {

                $(".time-line-icon.active").removeClass("active");

                $(this).find(".time-line-icon").addClass("active");

                $("b").removeClass("show");

                $(this).find("b").addClass("show");

                $(_this).animate({scrollTop: this.offsetTop - $.timeLineSetting.offsetTop},300);

                ev.preventDefault();

              }).delegate(".time-line-ul>li","dragstart" , function(ev) {

                //不允许img和a的拖拽;

                if( ev.target&&ev.target.tagName.toLocaleLowerCase() === "img" || ev.target.tagName.toLocaleLowerCase() === "a") {

                  return false;

                };

                /*拖拽开始*/

                //拖拽效果

                ev.originalEvent.dataTransfer.effectAllowed = "move";

                eleDrag = ev.originalEvent.target;

                return true;

              }).delegate(".time-line-ul>li","dragenter" , function(ev) {

                return true;

              }).delegate(".time-line-ul>li", "dragover" , function(ev) {

                $(".time-line-ul>li.over").removeClass("over");

                $(this).addClass("over");

                $(".blank").remove();

                var $blank = $("<li class='blank' draggable='true'></li>");

                $(this).after( $blank );

                /*拖拽元素在目标元素头上移动的时候*/

                ev.preventDefault();

                return true;

              });

              $(".time-line-ul").bind("drop" , function(ev) {

                if(ev.target.tagName.toLocaleLowerCase() === "li") {

                  $(ev.target).after( eleDrag );

                };

                $(".blank").remove();

                $(".time-line-ul>li.over").removeClass("over");

                return false;

              });

            });

          }

        });

      });

 

      $(function() {

        var compile= $.template( $("#li-tpl").html() || "");

 

        //与客户端的交互事件;

        var orginalData = {};

        window.onWebMessage = function( msg ) {

          msg = JSON.parse(msg);

          switch( msg.type ) {

            case "setItems" :

              $(".time-line-ul").html( compile(msg.data) );

              //结构化复制;

              orginalData = JSON.parse(JSON.stringify(msg.data));

              break;

 

            case "setItem" :

              orginalData.items&&orginalData.items.splice(msg.data[0],0,msg.data[1]);

              $(".time-line-ul").html( compile(orginalData) );

              break;

 

            case "getItem" :

                var result = [];

                var lis = $(".time-line-ul li");

                for(var i=0; i<lis.length; i++) {

                  result.push( {

                    index : i,

                    src : $(lis[i]).find("img").attr("src"),

                    name : $(lis[i]).find("span").text()

                  });

                };

                alert(JSON.stringify( result ));

              break;

 

            case "active" :

              $(".time-line-icon.active").removeClass("active");

              $(".time-line-ul>li").eq( msg.data).find(".time-line-icon").addClass("active")

              break;

 

          };

 

        };

 

        //启用插件;

        $(".scroll-time-line").timeLine();

      })

    </script>

  

Salin selepas log masuk

以上所述就是本文的全部内容了,希望大家能够喜欢。

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Penjelasan terperinci kaedah rujukan jQuery: Panduan permulaan cepat Penjelasan terperinci kaedah rujukan jQuery: Panduan permulaan cepat Feb 27, 2024 pm 06:45 PM

Penjelasan terperinci kaedah rujukan jQuery: Panduan Mula Pantas jQuery ialah perpustakaan JavaScript yang popular yang digunakan secara meluas dalam pembangunan tapak web Ia memudahkan pengaturcaraan JavaScript dan menyediakan pemaju dengan fungsi dan ciri yang kaya. Artikel ini akan memperkenalkan kaedah rujukan jQuery secara terperinci dan menyediakan contoh kod khusus untuk membantu pembaca bermula dengan cepat. Memperkenalkan jQuery Pertama, kita perlu memperkenalkan perpustakaan jQuery ke dalam fail HTML. Ia boleh diperkenalkan melalui pautan CDN atau dimuat turun

Bagaimana untuk menggunakan kaedah permintaan PUT dalam jQuery? Bagaimana untuk menggunakan kaedah permintaan PUT dalam jQuery? Feb 28, 2024 pm 03:12 PM

Bagaimana untuk menggunakan kaedah permintaan PUT dalam jQuery? Dalam jQuery, kaedah menghantar permintaan PUT adalah serupa dengan menghantar jenis permintaan lain, tetapi anda perlu memberi perhatian kepada beberapa butiran dan tetapan parameter. Permintaan PUT biasanya digunakan untuk mengemas kini sumber, seperti mengemas kini data dalam pangkalan data atau mengemas kini fail pada pelayan. Berikut ialah contoh kod khusus menggunakan kaedah permintaan PUT dalam jQuery. Mula-mula, pastikan anda memasukkan fail perpustakaan jQuery, kemudian anda boleh menghantar permintaan PUT melalui: $.ajax({u

Cara membuat garis masa dalam PPT Cara membuat garis masa dalam PPT Mar 20, 2024 pm 04:11 PM

Ramai kawan-kawan selalu merasakan apabila membuat PPT, penghasilannya terlalu membosankan dan tidak menyerlahkan ciri-ciri semua orang atau semua yang ada di dalamnya. Jadi, untuk menjadikan PPT kami kurang membosankan dan mempersembahkan kandungan kami dengan lebih teratur, kami boleh menggunakan garis masa dalam PPT untuk menjadikan PPT lebih jelas Jadi bagaimana kami boleh menggunakan garis masa dalam PPT? dan menarik? Seterusnya, mari kita lihat dengan editor Setelah anda mempelajarinya, anda boleh mempamerkannya di hadapan rakan anda. 1. Mula-mula buka PPT, buat dokumen kosong baharu, kemudian klik [Sisipkan], klik [Grafik Seni Pintar] 2. Klik [Proses], klik pada mana-mana satu, dan kemudian tekan OK. 3. Kita boleh melakukannya sesuka hati

Bagaimana untuk mengalih keluar atribut ketinggian elemen dengan jQuery? Bagaimana untuk mengalih keluar atribut ketinggian elemen dengan jQuery? Feb 28, 2024 am 08:39 AM

Bagaimana untuk mengalih keluar atribut ketinggian elemen dengan jQuery? Dalam pembangunan bahagian hadapan, kita sering menghadapi keperluan untuk memanipulasi atribut ketinggian elemen. Kadangkala, kita mungkin perlu menukar ketinggian unsur secara dinamik, dan kadangkala kita perlu mengalih keluar atribut ketinggian unsur. Artikel ini akan memperkenalkan cara menggunakan jQuery untuk mengalih keluar atribut ketinggian elemen dan memberikan contoh kod khusus. Sebelum menggunakan jQuery untuk mengendalikan atribut ketinggian, kita perlu terlebih dahulu memahami atribut ketinggian dalam CSS. Atribut ketinggian digunakan untuk menetapkan ketinggian elemen

Petua jQuery: Cepat ubah suai teks semua teg pada halaman Petua jQuery: Cepat ubah suai teks semua teg pada halaman Feb 28, 2024 pm 09:06 PM

Tajuk: Petua jQuery: Cepat ubah suai teks semua teg pada halaman Dalam pembangunan web, kita selalunya perlu mengubah suai dan mengendalikan elemen pada halaman. Apabila menggunakan jQuery, kadangkala anda perlu mengubah suai kandungan teks semua teg dalam halaman sekaligus, yang boleh menjimatkan masa dan tenaga. Berikut akan memperkenalkan cara menggunakan jQuery untuk mengubah suai teks semua teg pada halaman dengan cepat, dan memberikan contoh kod khusus. Pertama, kita perlu memperkenalkan fail perpustakaan jQuery dan memastikan bahawa kod berikut dimasukkan ke dalam halaman: &lt

Gunakan jQuery untuk mengubah suai kandungan teks semua teg Gunakan jQuery untuk mengubah suai kandungan teks semua teg Feb 28, 2024 pm 05:42 PM

Tajuk: Gunakan jQuery untuk mengubah suai kandungan teks semua teg jQuery ialah perpustakaan JavaScript yang popular yang digunakan secara meluas untuk mengendalikan operasi DOM. Dalam pembangunan web, kita sering menghadapi keperluan untuk mengubah suai kandungan teks tag pautan (tag) pada halaman. Artikel ini akan menerangkan cara menggunakan jQuery untuk mencapai matlamat ini dan memberikan contoh kod khusus. Pertama, kita perlu memperkenalkan perpustakaan jQuery ke dalam halaman. Tambahkan kod berikut dalam fail HTML:

Bagaimana untuk mengetahui sama ada elemen jQuery mempunyai atribut tertentu? Bagaimana untuk mengetahui sama ada elemen jQuery mempunyai atribut tertentu? Feb 29, 2024 am 09:03 AM

Bagaimana untuk mengetahui sama ada elemen jQuery mempunyai atribut tertentu? Apabila menggunakan jQuery untuk mengendalikan elemen DOM, anda sering menghadapi situasi di mana anda perlu menentukan sama ada sesuatu elemen mempunyai atribut tertentu. Dalam kes ini, kita boleh melaksanakan fungsi ini dengan mudah dengan bantuan kaedah yang disediakan oleh jQuery. Berikut akan memperkenalkan dua kaedah yang biasa digunakan untuk menentukan sama ada elemen jQuery mempunyai atribut khusus, dan melampirkan contoh kod tertentu. Kaedah 1: Gunakan kaedah attr() dan operator jenis // untuk menentukan sama ada elemen mempunyai atribut tertentu

Fahami peranan dan senario aplikasi eq dalam jQuery Fahami peranan dan senario aplikasi eq dalam jQuery Feb 28, 2024 pm 01:15 PM

jQuery ialah perpustakaan JavaScript popular yang digunakan secara meluas untuk mengendalikan manipulasi DOM dan pengendalian acara dalam halaman web. Dalam jQuery, kaedah eq() digunakan untuk memilih elemen pada kedudukan indeks tertentu Senario penggunaan dan aplikasi khusus adalah seperti berikut. Dalam jQuery, kaedah eq() memilih elemen pada kedudukan indeks yang ditentukan. Kedudukan indeks mula dikira dari 0, iaitu indeks elemen pertama ialah 0, indeks elemen kedua ialah 1, dan seterusnya. Sintaks kaedah eq() adalah seperti berikut: $("s

See all articles