我在哪里把$(this)放在函数中?

时间:2015-11-17 16:34:57

标签: javascript jquery

因为我想在这些函数中使用类而不是id(我有三个相同的函数,我想要不同的东西.append)我确信我需要把$(this)放在那些函数的某个地方才能触发按钮单击时只有一个功能,而不是全部三个。但我不确定因为我是jquery / js的初学者,所以我会很感激一些帮助。

$(document).ready(function () {
    $(".onclick").click(function () {
        $('#favorites').append('<div data-role="main"class="ui-content"><div  class="ui-grid-b"><div class="ui-block-a">Arrow</div><div class="ui-block-b">More Info</div><div class="ui-block-c">Unfavorite</div></div></div>');
    });
});

http://codepen.io/anon/pen/JYxqEw - HTML和Jquery代码

2 个答案:

答案 0 :(得分:1)

public class MaxConccurrentMiddleware : OwinMiddleware { private readonly int maxConcurrentRequests; private int currentRequestCount; public MaxConccurrentMiddleware(int maxConcurrentRequests) { this.maxConcurrentRequests = maxConcurrentRequests; } public override async Task Invoke(IOwinContext context) { try { if (Interlocked.Increment(ref currentRequestCount) > maxConcurrentRequests) { var response = context.Response; response.OnSendingHeaders(state => { var resp = (OwinResponse)state; resp.StatusCode = 429; // 429 Too Many Requests }, response); return Task.FromResult(0); } await Next.Invoke(context); } finally { Interlocked.Decrement(ref currentRequestCount); } } } 选择类$('.onclick')的所有元素。这意味着,只要点击onclick的某个内容,该功能就会触发。

如果您希望所有这些元素都将精确的HTML附加到class="onclick"元素,那么您可以按原样保留代码。

但是,如果您尝试做的是将html附加到单击的元素,即当您使用#favorites时 - 选择您使用jQuery单击的元素,那么你可以直接追加到那个元素,即:

$(this)

修改

所以要将每个$(document).ready(function () { $(".onclick").click(function () { // this will append the HTML to the element that triggered the click event. $(this).append('<div data-role="main"class="ui-content"><div class="ui-grid-b"><div class="ui-block-a">Arrow</div><div class="ui-block-b">More Info</div><div class="ui-block-c">Unfavorite</div></div></div>'); }); }); 的内容插入.onclick,您需要使用DOM节点的#favorites值。示例小提琴:

http://jsbin.com/qazepubuzu/edit?html,js,output

当您使用jQuery选择某些内容时,您实际上不仅会返回DOM节点,还会返回jQuery对象 - 此对象包含对实际DOM节点(innerHTML)的引用,如以及jquery对象([0])。

因此,要选择带有[1]的DOM节点,请定位节点:$(this)。然后,您可以使用$(this)[0]获取节点的HTML内容并按照您的喜好进行操作。

最终结果:

.innerHTML()

答案 1 :(得分:0)

所以构建块并不复杂,但我认为你是一个新手jQuery开发人员,所以你可能还不清楚jQuery和JS之间的区别。

$(selector, context)允许我们为CSS selector创建一个jQuery集合,它是当前context DOM节点的子节点,但是如果你没有指定一个,那么就有一个自动节点(我认为是document.body)。迭代jQuery集合的各种函数使得特定元素在JavaScript中可用作this。要从HTML片段中的strong元素到达.onclick元素,您需要在层次结构中向上移动,然后到达相应的元素。然后,我们可以从元素中收集文本。我们可以在JS或jQuery中执行此操作。

只需使用jQuery执行此操作:

// AP style title case, because Chicago is too crazy.
var to_title_case = (function () { // variable scope bracket
    var lower_case = /\b(?:a|an|the|and|for|in|so|nor|to|at|of|up|but|on|yet|by|or)\b/i,
        first_word = /^(\W*)(\w*)/,
        last_word = /(\w*)(\W*)$/;
    function capitalize(word) {
        return word.slice(0, 1).toUpperCase() + word.slice(1).toLowerCase();
    }
    function capitalize_mid(word) {
        return lower_case.exec(word) ? word.toLowerCase() : capitalize(word);
    }
    return function to_title_case(str) {
        var prefix = first_word.exec(str),
            str_minus_prefix = str.slice(prefix[0].length),
            suffix = last_word.exec(str_minus_prefix),
            center = str_minus_prefix.slice(0, -suffix[0].length);
        return prefix[1] + capitalize(prefix[2]) + center.replace(/\w+/g, capitalize_mid)
                + capitalize(suffix[1]) + suffix[2];
    };
})();

$(document).ready(function() {
    $(".onclick").click(function () {
        var text = $(this).parents('.ui-grid-a').find('.ui-block-a').text();
        var html = '<div data-role="main"class="ui-content">'
                 + '<div class="ui-grid-b"><div class="ui-block-a">' 
                 + to_title_case(text) + '</div><div class="ui-block-b">More Info</div>'
                 + '<div class="ui-block-c">Unfavorite</div></div></div>';
        $("#favorites").append(html);
    });
});