2013-06-13 20 views
45

Tôi đang gặp sự cố khi sử dụng biến làm công cụ chọn cho một đoạn mà tôi muốn thực hiện hành động. Cụ thể tôi có một số yếu tố tiêu đề và cùng một số đoạn văn. Kết quả mong muốn là nếu tôi nhấp vào Title1 thì tôi sẽ thực hiện một hành động trên đoạn 1. Tôi đã làm một trường hợp đơn giản cho các mục đích phát triển, theo đó nếu tôi nhấp vào một tiêu đề thì văn bản của đoạn văn thay đổi màu tương ứng. Nếu tôi mã cứng giải pháp nó hoạt động nhưng đi qua một biến như bộ chọn không thành công.jQuery: sử dụng biến làm công cụ chọn

Các jQuery là như sau:

jQuery(document).ready(function($){ 
     $(this).click(function(){ 

     var target=(event.target.id);// Get the id of the title on which we clicked. We will extract the number from this and use it to create a new id for the section we want to open. 
     alert(target);// checking that we are getting the right value. 
     var openaddress=target.replace(/click/gi, "section");//create the new id for the section we want to open. 
     alert('"#'+openaddress+'"');//Confirm that the correct ID has been created 
     $('"#'+openaddress+'"').css("color", "green");//get the id of the click element and set it as a variable. 
     //$("#section1").css("color", "green");//Test to confirm that hard coded selector functions correctly. 

      return false;// Suppress the action on the anchor link. 
      }); 


    }); 

Cảnh báo trả về sau biến alert returned showing the value of the variable mà dường như là chính xác và phù hợp với phiên bản cứng mã hoá. Tôi đã bỏ qua html vì nó hoạt động trong phiên bản mã hóa cứng mà tôi cho là không có vấn đề gì ở bên đó.

Tôi đánh giá cao mọi hướng dẫn về những gì tôi đang làm sai và cách sửa lỗi.

Cảm ơn

+1

Hãy thử bỏ qua dấu ngoặc kép thứ hai xung quanh '" # section1 "' để chuỗi thực sự được chuyển đến jQuery sẽ là '# section1' như mong muốn. Nếu điều đó hợp lý. Hãy thử chỉ cần đi qua ''#' + openaddress'. Lưu ý rằng mã của bạn chuyển vào '" # section1 "' và thử nghiệm của bạn sử dụng '# section1'. –

+0

'' #foo "' trong '$ (" # foo ")' được gọi là ** chuỗi ký tự ** và nó tạo ra chuỗi * giá trị * '# foo'. Chuỗi ký tự được biểu thị bằng hai dấu ngoặc kép (dấu nháy kép hoặc đơn). Điều này tương tự với các giá trị khác: '[...]' biểu thị một mảng, '/.../' một regex literal, '{...}' một đối tượng, v.v. Các ký hiệu này nói cho trình phân tích cú pháp cách diễn giải chuỗi ký tự. Chúng không phải là một phần của giá trị! Vì vậy, jQuery mong đợi '# foo' như một bộ chọn, nhưng bạn bao gồm các dấu ngoặc kép trong giá trị và truyền' '# foo'', đó là không chính xác. –

+0

@FelixKling: Cảm ơn sự giúp đỡ. Tôi đã không rõ ràng về chuỗi chữ và giá trị được sử dụng bởi jQuery. Tôi cần giải thích do đó câu hỏi 'trùng lặp' đối với tôi không hữu ích (nhưng chỉ vì sự thiếu hiểu biết của tôi.) – dorich

Trả lời

119

Bạn đang suy nghĩ quá phức tạp. Nó thực sự chỉ là $('#'+openaddress).

Các vấn đề liên quan