-6

我有一个生成一些随机字符串的 javascript,我想用 jQuery 重写:

function randomString() {
        var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz!@#$%^&*()_+";
        var string_length = 8;
        var randomStr = '';
        for (var i=0; i<string_length; i++) {
            var rnum = Math.floor(Math.random() * chars.length);
            randomStr += chars.substring(rnum,rnum+1);
        }
        document.getElementById('randomfield').innerHTML=randomStr;
    }

是否可以将它包装成这样的东西 $('.classname').click(function()

4

3 回答 3

2

首先要做的事情:jQuery 是 javascript,所以不需要重写。为什么你应该重写你的函数是为了使它更可重用:

// Instead of apply a random string value to a specific DOM element
// .. create a random string and return its value

function getRandomString() {
    var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz!@#$%^&*()_+";
    var string_length = 8;
    var randomStr = '';
    for (var i=0; i<string_length; i++) {
        var rnum = Math.floor(Math.random() * chars.length);
        randomStr += chars.substring(rnum,rnum+1);
    }
    return randomStr;
}

// Quite useful, because we can now use it whenever we want. 
// For example use it within a click handler function:

$('#button').on('click', function () {
    $('#randomfield').text(getRandomString());        
});
于 2013-11-13T21:00:31.063 回答
2

根据您的评论,您想使用点击内容的参考。所以调用函数

$('.className').click(randomString);

它将 this 设置为对象,因此您可以在 randomString 内部使用$(this).text(randomStr);


    function randomString() {
        var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz!@#$%^&*()_+";
        var string_length = 8;
        var randomStr = '';
        for (var i=0; i<string_length; i++) {
            var rnum = Math.floor(Math.random() * chars.length);
            randomStr += chars.substring(rnum,rnum+1);
        }
        $(this).text(randomStr);
    }


    $('.className').click(randomString);
于 2013-11-13T21:01:11.087 回答
0

小部件工厂允许您添加 jQuery 函数;它看起来像这样。

$.widget('nt.randomString', {
     var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz!@#$%^&*()_+";
        var string_length = 8;
        var randomStr = '';
        for (var i=0; i<string_length; i++) {
            var rnum = Math.floor(Math.random() * chars.length);
            randomStr += chars.substring(rnum,rnum+1);
});
$("#randomfield").randomString.text()

这是使用小部件工厂的教程http://net.tutsplus.com/tutorials/javascript-ajax/an-in-depth-review-of-jquerys-widget-factory/

于 2013-11-13T21:05:33.290 回答